Kubernetes Ansible can';t handle kubectl代理命令
我有一个Ansible脚本,它安装了Kubernetes集群,应该可以启用仪表板。一项任务是给我一些问题:Kubernetes Ansible can';t handle kubectl代理命令,kubernetes,ansible,kubectl,Kubernetes,Ansible,Kubectl,我有一个Ansible脚本,它安装了Kubernetes集群,应该可以启用仪表板。一项任务是给我一些问题: - name: Expose Dashboard UI shell: kubectl proxy --port=8001 --address={{ hostvars['master'].master_node_ip }} --accept-hosts="^*$" >> dashboard_started.txt args: chdir: $HOME cr
- name: Expose Dashboard UI
shell: kubectl proxy --port=8001 --address={{ hostvars['master'].master_node_ip }} --accept-hosts="^*$" >> dashboard_started.txt
args:
chdir: $HOME
creates: dashboard_started.txt
问题是,这是可行的,但命令kubectl proxy
正在阻塞:在命令中按ctrl+c组合键之前,无法键入其他命令,此时仪表板无法访问。我的Ansible脚本因执行此命令而冻结。Ansible冻结时,我可以成功连接到浏览器中的仪表板。但在这之后,我还需要Ansible执行其他任务。我已尝试在命令末尾添加一个符号和&
:
kubectl proxy--port=8001--address={{hostvars['master'].master\u node\u ip}}--accept hosts=“^*$”>>dashboard\u start.txt&
或
kubectl proxy--port=8001--address={{hostvars['master'].master\u node\u ip}}--accept hosts=“^*$”&>>dashboard\u start.txt
虽然这两个命令都会导致Ansible执行并跳过我的任务,但我无法到达仪表板。在运行该命令的计算机上使用jobs
命令,不会显示root用户或Ansible用户的后台任务
我做错了什么
编辑:
对于阅读本文的读者:请不要这样做,除非您可以从LOCALHOST访问仪表板。如果您在VM或某个外部服务器上运行Kubernetes Dashboard,并试图从另一台机器(例如VM主机)访问它,则无法登录。请看这里:
注意:仪表板不应使用kubectl代理公开
命令,因为它只允许HTTP连接。对于除
localhost和127.0.0.1将无法登录。没有什么
将在单击登录页面上的登录按钮后发生
可以使用异步选项运行任务。例如:
- name: Expose Dashboard UI
shell: "(kubectl proxy --port=8001 --address={{ hostvars['master'].master_node_ip }} --accept-hosts="^*$" >> dashboard_started.txt >/dev/null 2>&1 &)"
args:
chdir: $HOME
creates: dashboard_started.txt
async: 10
poll: 0
当poll为0时,Ansible将启动任务并立即转到下一个任务,而无需等待结果
我个人添加了子shell括号,虽然我认为没有必要使用它们,但异步本身完成了我希望的任务
希望有帮助