kubeadm ノードの追加
kubeadmのクラスターで新規ノードを追加したときの備忘録。
一般的にはコントロールプレーンノードでkubeadm initをしたときに出力されるkubeadm initを実行すれば良い
kubeadm join --token <token> <control-plane-host>:<control-plane-port> --discovery-token-ca-cert-hash sha256:<hash>
ただ、それを記録していなかった場合、24時間以内であれば、次のコマンドで<token>を取得可能
kubeadm token list
24時間たってしまい、上記で取得できない場合は、次のコマンドで新しいトークンを作成する必要がある。
kubeadm token create
--discovery-token-ca-cert-hash sha256:<hash>の値は、コントロールプレーンノードで次のコマンドチェーンを実行することで取得可能
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ openssl dgst -sha256 -hex | sed 's/^.* //'
実際に実行した結果
既存のクラスタ(kube01: master, kubeadm02: worker)にkubeadm03: workerを追加する
作業前の状態
[root@kube01 ~]# k get node NAME STATUS ROLES AGE VERSION kube01 Ready control-plane,master 7d18h v1.21.0 kubeadm02 Ready <none> 7d18h v1.21.0
トークンの作成
[root@kube01 ~]# kubeadm token list #何も表示されなかった場合、createを実施 [root@kube01 ~]# kubeadm token create a2fybd.2j7fvqa71urarpl2
ca-certのハッシュ値確認
[root@kube01 ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \ > openssl dgst -sha256 -hex | sed 's/^.* //' 4ea2ed8b2642a06bcf4f9117e33b590b9d5e3209ba5ba2aec3e9e5326fe179c8
ipアドレスの確認
[root@kube01 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:50:56:8d:c4:88 brd ff:ff:ff:ff:ff:ff inet 192.168.1.249/24 brd 192.168.1.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet6 fe80::b56b:899e:2c88:ab13/64 scope link noprefixroute valid_lft forever preferred_lft forever …
kubeadm03でkubeadm joinの実行(デフォルトの<control-plane-port>は6443)
[root@kubeadm03 ~]# kubeadm join --token a2fybd.2j7fvqa71urarpl2 192.168.1.249:6443 --discovery-token-ca-cert-hash sha256:4ea2ed8b2642a06bcf4f9117e33b590b9d5e3209ba5ba2aec3e9e5326fe179c8 [preflight] Running pre-flight checks [preflight] Reading configuration from the cluster... [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml' [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml" [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env" [kubelet-start] Starting the kubelet [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap... This node has joined the cluster: * Certificate signing request was sent to apiserver and a response was received. * The Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
kubeadm03が追加されたことを確認
[root@kube01 ~]# k get nodes NAME STATUS ROLES AGE VERSION kube01 Ready control-plane,master 7d18h v1.21.0 kubeadm02 Ready <none> 7d18h v1.21.0 kubeadm03 NotReady <none> 7s v1.21.0 [root@kube01 ~]# k get nodes NAME STATUS ROLES AGE VERSION kube01 Ready control-plane,master 7d18h v1.21.0 kubeadm02 Ready <none> 7d18h v1.21.0 kubeadm03 Ready <none> 13s v1.21.0