오늘은 kubernetes에서 구성되어있는 cluster에 새로운 node를 추가하는 방법에 대해 포스팅 하려고 합니다.
초기에 master node에서 cluster을 생성할 때 kubeadm init 명령어를 실행하면
다음과 같은 형태의 명령어가 출력되었습니다.
kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
새로운 worker node를 추가할때도 방법은 동일하지만 최초에 생성된 token은 일정 시간이 지나면
사라지기 때문에 새로 생성해야 할 수도 있습니다.
token이 현재 있을때와 없을때의 방법으로 설명하도록 하겠습니다.
먼저 token이 존재 하는지 확인합니다.
아래와 같은 형태로 1개 이상의 token이 존재한다면 현재 존재하는 token을 이용하여
새로운 worker의 node join이 가능합니다.
$ kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
qo6hxg.18cz1tuf29g4zs3t 16m 2022-11-11T05:27:46Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kube
1) 기존 token이 존재하는 경우
kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> 의 형태에서
<master-ip>
<master-port>
<token>
<hash>
의 값을 먼저 확인해야 합니다.
master-ip = master node의 IP
master-port = 일반적으로 6443
token값과 hash값을 기존에 token list에서 있던 정보들로 찾아내야 합니다.
(1) token 값
kubeadm token list의 TOKEN Column
$ kubeadm token list
TOKEN
qo6hxg.18cz1tuf29g4zs3t
(2) hash 값
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
e8aa4a28ee5d9d11beb721d558434ef7525c41303a2d72441cb6759ea7aea3e8
찾은 정보들을 조합해서 보면 다음과 같은 명령어를 만들 수 있습니다.
해당 명령어를 새로운 worker node에서 실행해 주면 node join을 할 수 있습니다.
kubeadm join 192.168.131.30:6443 --token qo6hxg.18cz1tuf29g4zs3t --discovery-token-ca-cert-hash sha256:e8aa4a28ee5d9d11beb721d558434ef7525c41303a2d72441cb6759ea7aea3e8
2) 기존 token이 존재하지 않는 경우
만약 일정 시간이 지나서 token이 존재하지 않는경우 새로운 token을 생성해야 합니다.
사실 새로운 token을 생성하는 일이 더욱 쉬운편입니다.
아래와 같이 token 생성 명령어와 뒤에 --print-join-command 옵션을 추가하면
worker node에서 바로 실행 가능한 명령어가 출력됩니다.
해당 명령어를 복사하셔서 worker node에서 입력하시면 node join이 가능합니다.
$ kubeadm token create --print-join-command
kubeadm join 192.168.131.30:6443 --token tm8yz9.t2oufz132c9imdxt --discovery-token-ca-cert-hash sha256:e8aa4a28ee5d9d11beb721d558434ef7525c41303a2d72441cb6759ea7aea3e8
지금까지 Kubernetes 신규 worker node join 방법에 대한 포스팅 이였습니다.