1. 개요

Kubernetes 운영 하던 중 노드를 추가 해야할 상황에서 (초기 설치가 아닌..) 

최초 kubeadm init 시 표시된 

kubeadm join <Kubernetes API Server:PORT> --token <Token 값> --discovery-token-ca-cert-hash sha256:<Hash 값>

명령을 이용하면 token이 만료 되었다는 에러와 함께 Wokrer 노드가 Master 노드에 붙지 않는 문제가 있다. 

 

이유는 최초 노드 조인을 위해 토큰을 발행 하면 아래와 같이 EXPIRES 기간이 있기 때문이다. 

$ kubeadm token list

TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS

<토큰값>  <invalid>   2018-10-18T10:08:29+09:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

 

물론 토큰값이 존재 한다면 이 값을 이용하면 되고...

kubeadm token list 를 수행해서 아무런 값이 없을 경우엔 노드를 붙일 수 없다.

 

$ kubeadm token list

 

TOKEN                     TTL         EXPIRES                     USAGES                   DESCRIPTION                                                EXTRA GROUPS

 

2. Token 생성(확인)

$ kubeadm token list

$ kubeadm token create

 

3. Hash 확인

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

 

4. Join

kubeadm join <Kubernetes API Server:PORT> --token <2. Token 값> --discovery-token-ca-cert-hash sha256:<3. Hash 값>

 

문제 해결~