비용적 이유 때문에 클러스터를 종료할 때 클러스터를 초기화시키거나, 데이터 플레인만을 종료해서 다시 클러스터에 join시키는 방법이 있다. 즉 컨트롤 플레인은 24/7 운영해야 한다.
K8S 클러스터에 join하기 위한 토큰은 아래와 같은 형식이다.
kubeadm join <control-plane-private-ip>:6443 --token <token> \
--discovery-token-ca-cert-hash sha256:<hash>
kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
<token> 23h 2024-06-22T06:01:53Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
Token값이 있는데, TTL이 존재해서 토큰이 만료하면 사용할 수 없다. 따라서 토큰을 다시 만들어 주자.
kubeadm token create
# <token2>
kubeadm token list
##################
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
<token> 23h 2024-06-22T06:01:53Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
<token2> 23h 2024-06-22T06:08:53Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
openssl을 이용해서 구하자.
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
# <hash>
위에서 구한 token과 hash 를 이용해 재접속을 하면 된다.
kubeadm join <control-plane-private-ip>:6443 --token <new_token> \
--discovery-token-ca-cert-hash sha256:<new_hash>