kubeadm:显式设置要加入的节点的标记

问题描述 投票:1回答:2

我使用kubeadm设置了我的主节点。

现在我想在我的节点上运行join命令,以便后来加入集群。

我所要做的就是跑步

kubeadm join --token <token> --discovery-token-ca-cert-hash <sha256>

其中<token>和以前由以下命令返回的值:

kubeadm init 

我也试图编写上面的过程脚本,我发现从最后一个命令解析实际的标记是有点困难的;

所以我在徘徊是否有一种方法在群集初始化期间明确指定<token><sha256>,以避免必须执行init命令的hacky解析。

kubernetes kubeadm
2个回答
1
投票

我也试图为它制作一个脚本。

为了获得所需的值,我使用以下命令:

TOKEN=$(sshpass -p $PASSWORD ssh  -o StrictHostKeyChecking=no root@$MASTER_IP sudo kubeadm token list | tail -1 | cut -f 1 -d " ") 


HASH=$(sshpass -p $PASSWORD ssh  -o StrictHostKeyChecking=no  root@$MASTER_IP  openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' )

基本上我使用这个命令在master上ssh并获取这个值。

我还没有找到一种更简单的方法来实现这一目标。


0
投票

实际上似乎有办法解决这个问题:

(我把它放在ansible任务中因为这是我计划使用它的地方)

  - name: kubernetes.yml --> Initiate kubernetes cluster
      shell: 'kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address={{ ansible_facts[if_name]["ipv4"]["address"] }}'
      become: yes
      when: inventory_hostname in groups['masters']


    - name: kubernetes.yml --> Get the join command
      shell: kubeadm token create --print-join-command
      register: rv_join_command
      when: inventory_hostname in (groups['masters'] | last)
      become: yes

    - name: kubernetes.yml --> Print the join command
      debug:
        var: rv_join_command.stdout

输出:

TASK [kubernetes.yml --> Print the join command] *******************************
ok: [kubernetes-master-1] => 
  rv_join_command.stdout: 'kubeadm join 192.168.30.1:6443 --token ah0dbr.grxg9fke3c28dif3i     --discovery-token-ca-cert-hash sha256:716712ca7f07bfb4aa7df9a8b30ik3t0k3t2259b8c6fc7b68f50334356078 '
© www.soinside.com 2019 - 2024. All rights reserved.