
cluster3-node2 를 클러스터에 추가해야하는 상황 및 kubelet 버전 업그레이드 필요
➜ k get node
NAME STATUS ROLES AGE VERSION
cluster3-controlplane1 Ready control-plane 3h28m v1.30.1
cluster3-node1 Ready <none> 3h23m v1.30.1
# ssh cluster3-node2
➜ kubelet --vsion
Kubernetes v1.29.5
# kubeadm 은 이미 버전이 v1.30 인 상황 (업그레이드 불필요)
➜ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"30", GitVersion:"v1.30.1", GitCommit:"6911225c3f747e1cd9d109c305436d08b668f086", GitTreeState:"clean", BuildDate:"2024-05-14T10:49:05Z", GoVersion:"go1.22.2", Compiler:"gc", Platform:"linux/amd64"}
# 그러나 kubeadm upgrade plane 실행 시 관련 파일들이 없다는 에러 발생
### 실제로 클러스터에 join 되지 않은 노드리는 의미
➜ kubeadm upgrade plan
couldn't create a Kubernetes client from file "/etc/kubernetes/kubelet.conf": failed to load admin kubeconfig: open /etc/kubernetes/kubelet.conf: no such file or directory
To see the stack trace of this error execute with --v=5 or higher
node2 를 controlplane 과 동일한 버전으로 바이너리 설정
➜ apt-get update
➜ apt install kubectl=1.30.1-1.1 kubelet=1.30.1-1.1
➜ kubelet --vsion
Kubernetes v1.30.1
# 완료
➜ systemctl restart kubelet
controlplane 에서 token 생성
# join 하기 쉽도록 --print-join-command 옵션 추가
➜ kubeadm token create --print-join-command
kubeadm join {controlplane IP}:6443 --token newtoken --discovery-token-ca-cert-hash sha256:asdfasdf9
# 신규 token 내용 확인 가능
➜ kubeadm token list
이후 node2 에서 위의 command 실행 (kubeadm join)
➜ kubeadm join {controlplane IP}:6443 --token newtoken --discovery-token-ca-cert-hash sha256:asdfasdf9
신규 노드의 추가 내용 확인
➜ k get node
NAME STATUS ROLES AGE VERSION
cluster3-controlplane1 Ready control-plane 3h28m v1.30.1
cluster3-node1 Ready <none> 3h23m v1.30.1
cluster3-node2 Ready <none> 10m v1.30.1
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/