kubernetes 如何将kuberntes join token命令复制到worker?

nwnhqdif  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(1)|浏览(105)

我正在尝试设置一个具有一个主节点和两个工作节点的Kubernetes集群。只能将kubeadm令牌从主节点复制到一个工作节点,而不能复制到另一个工作节点(在两个节点上都设置了ssh密钥)。

In my host.ini file, I have set up the following settings:

[masters]
master ansible_host=ipaddr

[workers]
wk1 ansible_host=ipaddr1
wk2 ansible_host=ipaddr2

我将kubeadm join token复制到我的master节点中的一个文件中(请注意,我从role/master/tasks/main.yaml运行我的playbook

- name: Get the token for joining the worker nodes
  tags: createjointoken
  become: yes
  command: kubeadm token create  --print-join-command
  register: join_worker_command

- name: copy the token to a file
  tags: createjointoken
  copy:
    content: "{{join_worker_command.stdout }}"
    dest: path to copy the file
    mode: 0644

现在我想将文件复制到我的worker节点,所以我从worker任务(从/role/worker/tasks/main.yaml)运行以下代码

- name: Copy the file 
  tags: copytkn
  become: yes
  copy:
    remote_src: yes
    src: path to file
    dest: path to file

现在出现了令牌成功复制到wk 1而未复制到wk 2的问题。
上面写着Source (filepath) not found。你能帮我把文件成功复制到两个工作节点吗?复制到另一个节点似乎不起作用,所以我不知道为什么会发生这种情况。
谢谢

ozxc1zmp

ozxc1zmp1#

当我想创建一个kubernetes集群时,我也遇到了这个问题,当我在寻找解决方案时,我发现了一些对我来说很有用的任务。

- name: Get the token for joining the worker nodes
      become: yes
      become_user: kube
      shell: kubeadm token create  --print-join-command
      register: kubernetes_join_command

    - name: Copy join command to local file.
      become: yes
      local_action: copy content="{{ kubernetes_join_command.stdout_lines[0] }}" dest="/tmp/kubernetes_join_command" mode=0777

然后在workers文件上声明了以下任务

- name: Copy join command from Ansiblehost to the worker nodes.
     become: yes
     copy:
       src: /tmp/kubernetes_join_command
       dest: /tmp/kubernetes_join_command
       mode: 0777

   - name: Join the Worker nodes to the cluster.
     become: yes
     command: sh /tmp/kubernetes_join_command
     register: joined_or_not

经过进一步的研究,我发现在kubernetes文档中还有一个非常有用的工具,叫做“kubespray”。这是一个非常强大的工具,可以引导kubernetes集群沿着其他可能对你有用的附加组件。Kubespray

相关问题