반응형
클러스터에 속해 있지 않는 노드(worker2번이라고 가정) 의 버전을 확인하고 해당 노드를 클러스터에 join 해본다
먼저 현재 클러스터의 상태를 확인한다.
kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 116m v1.23.1
worker1 NotReady <none> 112m v1.23.1
현재 master, worker1 번 노드의 kubernetes 버전이 v1.23.1 이고, 아직 worker2 번 노드가 join 되지 않은 것을 확인한 후에 worker2번으로 이동한다.
### 해당 노드로 이동
ssh cluster3-worker2
### kubernetes (kubeadm / kubectl / kubelet) 의 버전 확인
root@worker2:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"clean", BuildDate:"2021-12-16T11:39:51Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"linux/amd64"}
root@worker2:~# kubectl version
Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:48:33Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
root@worker2:~# kubelet --version
Kubernetes v1.22.4
해당 노드에 kubeadm 이 이미 설치되어 있으므로 바로 upgrade를 수행해본다.
root@worker2:~# kubeadm upgrade node
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
보통은 위 방법을 이용하여 업그레이드를 수행한다. 하지만 현재 이 노드는 아예 초기화도 되지 않았으므로 업데이트 할 내용이 없다는 명령을 출력한다. 추후에 kubeadm join 을 사용하여 해결될 것이므로, 여기서는 계속해서 kubelet, kubectl 을 사용한다.
root@worker2:~# apt update
...
root@worker2:~# apt show kubectl -a | grep 1.23
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Version: 1.23.1-00
Version: 1.23.0-00
root@worker2:~# apt install kubectl=1.23.1-00 kubelet=1.23.1-00
..
### 업그레이드 후 버전 확인
root@worker2:~# kubelet --version
Kubernetes v1.23.1
이제 kubelet 을 업그레이드 하기 위해 프로세스를 재시작한다.
root@worker2:~# systemctl restart kubelet
root@worker2:~# service kubelet status
버전 업그레이드를 종료한 이후 이제 클러스터에 join 을 수행한다. 이를 위해 먼저 master 노드에서 join 에 필요한 토큰을 발행한다.
ssh master1
root@master1:~# kubeadm token create --print-join-command
kubeadm join 192.168.100.32:6443 --token kjf8es.7behrwrv738dj8mu --discovery-token-ca-cert-hash sha256:ff74d8c4d07a27b9974a8e976149a7958e70b7aa9a2e2c34d0882256fc768f0d
root@master1:~# kubeadm token list
TOKEN TTL EXPIRES ...
mnkpfu.d2lpu8zypbyumr3i 23h 2022-03-04T12:32:00Z ...
poa13f.hnrs6i6ifetwii75 <forever> <never> ...
worker노드에서 join 을 위해 사용할 명령어를 확인하였으면 해당 노드에 접속하여 join 을 수행한다.
ssh worker2
root@worker2:~# kubeadm join 192.168.100.32:6443 --token kjf8es.7behrwrv738dj8mu --discovery-token sha256:ff74d8c4d07a27b9974a8e976149a7958e70b7aa9a2e2c34d0882256fc768f0d
...
root@worker2:~# service kubelet status
join 이 끝나면 kubectl 명령을 사용하여 노드가 정상적으로 join 되었음을 확인한다.
kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane,master 24h v1.23.1
worker1 Ready <none> 24h v1.23.1
worker2 Ready <none> 107s v1.23.1
'소프트웨어 아키텍처 > Kubernetes' 카테고리의 다른 글
[Kubernetes] CKA 자격 시험 후기 (0) | 2022.05.15 |
---|---|
[Kubernetes] 1-21. static pod, service 생성 (0) | 2022.05.11 |
[Kubernetes] 1-19. Secret 생성 후 파드에 마운트 하기 (0) | 2022.05.10 |
[Kubernetes] 1-18. Kubelet 수정하기 (0) | 2022.05.10 |
[Kubernetes] 1-17. 파드의 컨테이너 정보 확인하기 (0) | 2022.05.10 |
댓글