Kubernetes 使用Ansible创建kubeadm令牌

Kubernetes 使用Ansible创建kubeadm令牌,kubernetes,ansible,Kubernetes,Ansible,我正在裸机上运行Kubernetes群集,我正在编写一个Ansible任务,以从主节点获取join命令: - name: Get join command from master shell: kubeadm token create --print-join-command when: role == "master" run_once: true register: join_command 当我运行playbook时,我得到了以下错误:“在5次尝试之后无法创建引导令牌[]

我正在裸机上运行Kubernetes群集,我正在编写一个Ansible任务,以从主节点获取join命令:

- name: Get join command from master
  shell: kubeadm token create --print-join-command
  when: role == "master"
  run_once: true
  register: join_command
当我运行playbook时,我得到了以下错误:“在5次尝试之后无法创建引导令牌[]”

如果我直接在主主机上运行完全相同的命令(
kubeadm-token-create--print-join命令
),或远程使用
ssh-kube-master-kubeadm-token-create--print-join命令
),它将正确输出join命令


我已经没有选择了。。。有什么想法吗?

如果您的“kubeadm”无法使用配置文件中的凭据连接到Kubernetes群集,则会出现该错误。您可以通过停止主节点上的
docker
服务来复制它

在您的案例中,使用Ansible或shell运行命令没有区别,因此它应该可以工作

因此,我唯一能提出的建议是:

  • 验证Ansible角色
    主机
    是否已连接到正确的主机
  • 检查Ansible用户是否有权访问
    kubeadm
    配置,其默认路径为
    /etc/kubernetes/admin.conf
    ,并确保配置正确。您可以尝试使用
    been:true
    选项以root用户身份运行该命令

  • ansible playbook中设置了代理配置:

    ---
    
    - hosts: [vmsk8s]
      roles:
        - vmsk8s
      environment:
        http_proxy: http://10.0.0.1:3128
        https_proxy: http://10.0.0.1:3128
    

    删除代理环境变量修复了问题。

    在我的例子中,
    kubelet
    没有运行,因为重新启动后服务器上有交换空间。Ansible和直接在服务器上运行的命令都不起作用。一旦我禁用了swap,这个命令在两个地方都能工作。