Kubernetes/실습

[Kubernetes] Worker (slave) node upgrade

아무일도없었다 2024. 3. 22. 00:31
!!! 중요 !!!
Kubernetes의 버전은 반드시 순차적으로 Upgrade 해야 한다.
(ex: v1.25의 경우 v1.25 → v1.26 → v1.27 ... 순으로 해야 함)
Control Plane (Master) Node와 Worker Node를 같이 Upgrade 해야 한다.
(ex: Worker Node가 v1.25 인 경우 Control Plane은 v1.27 이상으로 하려면 Error 발생)

 

Upgrade 환경 및 버전

  • Rocky Linux 9.3
  • Linux 5.14 el9 x86_64
  • kubeadm v1.26.14 (Control Plane Node)
  • kubeadm v1.25.16 (Worker Node)
  • kubelet v1.25.16 (Worker Node)

 

1. 설치된 kubernetes 버전 확인

  • kubeadm 버전 확인
kubeadm version

kubeadm 버전

 

  • kubelet 버전 확인
kubelet --version

kubelet 버전

 

  • Node 확인
kubectl get nodes

Node 버전

 

 

2. Kubeadm Upgrade

  • yum repo 등록
    (본 포스팅에서 설치된 kubernetes는 1.25이므로 1.26으로 upgrade 한다. 다른 버전의 경우 baseurl과 gpgkey의 v1.26을 변경하면 된다.)
sudo cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.26/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.26/rpm/repodata/repomd.xml.key
EOF

kube v1.26 repo 등록

 

 

  • install 할 kubeadm 버전 확인
yum list --showduplicates kubeadm --disableexcludes=kubernetes

이왕이면 control-plane과 버전을 맞추는게 좋다.

 

 

  • kubeadm 다운로드
yum install -y kubeadm-1.26.14-150500.1.1 --disableexcludes=kubernetes

kubeadm 설치

 

 

  • 다운로드된 kubeadm 버전 확인
kubeadm version

new kubeadm 버전

 

만약 kubeadm 버전이 변경이 안된다면 다운로드한 kubeadm과 기존의 kubeadm의 경로가 다를 수 있다.
(yum으로 설치된 kubeadm은 /usr/bin/kubeadm 에 있다.)

kubespray 같은 방법으로 cluster를 설치했다면 /usr/local/bin에 있을 가능성이 높다. (which 명령으로 확인)

이런 경우 기존 kubeadm 바이너리의 이름을 변경하고 세션 재접속을 하면 된다.

추가로 kubeadm이 경로가 다르다면 kubelet도 같은 작업을 할 가능성이 높으므로 미리 하는 게 좋다.

(필자는 Worker Node에 kubectl을 설치하지 않아서 kubectl은 건너뛰지만 kubectl을 사용하는 Worker Node라면 같이 하는 것이 좋다.)

 

 

  • Kubeadm Upgrade 실행
    (★ node 이름을 넣는 게 아니라 아래 명령어를 그대로 써야 한다. ★ )
kubeadm upgrade node

kubeadm upgrade node

 

 

3. Kubelet Upgrade

kubectl 명령을 사용할 수 있는 환경을 준비해야 한다. 

 

 

  • Node 드레인 (kubectl 가능한 곳에서 해야 한다.)
kubectl drain <NodeName> --ignore-daemonsets

 

 

  • Node 상태 확인
kubectl get nodes

SchedulingDisabled 확인

 

 

  • Kubelet 다운로드
yum install -y kubelet-1.26.14-150500.1.1 --disableexcludes=kubernetes

kubelet 다운로드

 

 

  • 다운로드된 Kubelet 버전 확인
kubelet --version

new kubelet 버전

 

 

  • Kubelet Upgrade
systemctl daemon-reload
systemctl restart kubelet

 

 

  • Node Uncordon
kubectl uncordon <NodeName>

 

 

  • Kubelet Upgrade 확인
kubectl get nodes

Node Upgrade 확인

 

 


 

참고 사이트

 

반응형