[쿠버네티스] Cluster Upgrade

Manx·2025년 3월 4일
0

DevOps

목록 보기
4/5

Cluster의 버전을 업데이트하는 방법에 대해 알아보자.
kubeadm, kubectl, kubelet 버전을 업데이트 할거임.

우선 버전별로 업데이트 하는 방법은 공식문서를 참조하면 된다.
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/


서론

업데이트 하기 전 Drain과 Cordon에 대해 알아야 한다.

특정 node를 업데이트하는데, 해당 node에서 Application이 실행 중이면 서비스 다운타임이 발생한다.
다운타임을 최소화하기 위해 Drain과 Cordon을 사용한다.

Drain

  • 지정된 노드에 taint를 적용하여 더이상 새로운 Pod가 할당되지 않게 한다.
  • 실행 중인 Pod를 다른 Node로 이동시킨다. ( rs의 일부인 Pod만 이동 )
  • Node를 비울 때 사용한다.

kubectl drain <node-name>

Cordon

  • 지정된 노드에 NoSchedule Taint를 적용해 새로운 Pod가 할당되지 않게 한다.
  • 실행 중인 Pod는 그대로 유지된다.
  • Node 점검 시 활용한다.

kubectl cordon <node-name>

UnCordon

  • NoSchedule Taint가 적용된 Node의 Taint를 제거한다.

kubectl uncordon <node-name>


이해하기 쉬운짤이 있어 퍼왔습니다. ( 출처 )

그럼 이제 Upgrade하는 과정을 시작해보자.

1. Master Node Upgrade

우선 Master Node를 Upgrade 해야 한다.
주의할 점은 kube-apiserver의 버전은 controle-plane의 kubectl를 제외한 다른 모든 버전보다 높거나 같아야 한다

sudo apt update
sudo apt-cache madison kubeadm

해당 명령어를 통해 사용할 수 있는 버전들을 조회한다.

이후 이걸 통해 패키지를 다운로드 받으면 된다.

sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.32.x-*' && \
sudo apt-mark hold kubeadm

이때 만약 e: version '1.32.0-*' for 'kubeadm' was not found 오류가 발생한다면 다음 과정을 거쳐야 한다.

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/change-package-repository/


APT 리포지토리 설정에 적혀있는 주소에서는 1.32.0이 없기 때문에 그렇다.
nano /etc/apt/sources.list.d/kubernetes.list 를 하면 다음과 같이 나옴.

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /

이 v1.31을 v1.32로 변경해 주면 된다.


이후로는 업데이트 진행하면 된다.

sudo kubeadm upgrade apply v1.32.x

kubectl drain <node-to-drain> --ignore-daemonsets

sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.32.x-*' kubectl='1.32.x-*' && \
sudo apt-mark hold kubelet kubectl

sudo systemctl daemon-reload
sudo systemctl restart kubelet

kubectl uncordon <node-to-uncordon>

Master Node의 업데이트가 끝났다면, Worker Node를 시작해야 한다.

Worker Node

Worker Node는
kubeadm upgrade apply v1.32.x 대신에 kubeadm upgrade node를 하면 된다.

drain은 Master Node에서 해야 한다!

이후는 동일함

0개의 댓글