Cluster Version Upgrade

zuckerfrei·2024년 1월 4일
0

Kubernetes

목록 보기
35/63

k8s 버전

필요하다면 각 부분 별로 버전 업그레이드 가능함
버전 업그레이드는 마이너 버전 1개씩 업그레이드 하는 것을 권장한다(v1.11 → v1.12)
한 번에 여러 마이너 버전을 넘어가는 것이 아니라(v1.11 → v1.13)

먼저 마스터 노드 업그레이드하고 워커 노드 업그레이드 하는 순서로 작업한다.
마스터 노드가 잠시 멈춘다고 해서 워커 노드가 영향 받는 것은 아님
(평소 처럼 서비스 가능, 그러나 관리 기능은 사용할 수 없고)

전략 1. 모든 워커 노드를 한 번에 업그레이드 하기

업그레이드 하는 동안은 사용자가 앱에 접속할 수 없음

전략 2. 노드 하나씩 업그레이드 하기

마스터 노드 → 워커 노드 1 → 워커 노드 2 …
그동안 업그레이드 작업 중인 노드에 있던 파드는 다른 노드로 옮겨져서 계속 서비스 제공.

전략 3. 클러스터에 최신 버전의 새 노드 추가하기

특히 클라우드 환경에서 선택하기 쉬운 전략
최신 버전의 새 노드로 파드를 옮기고, 기존 노드는 제거하는 방법


버전 업그레이드 하기 - kubeadm

kubeadm 사용할 경우의 업그레이드 방법이며, 스크래치로 설치하면 이렇게 하지 말고 각각 따로 업그레이드 해줘야 함

아래는 업그레이드 예시일 뿐이고 버전 업글 작업의 흐름만 파악하면 된다.
실제 업무에서는 공식문서 찾아봐서 각 버전 별 업그레이드 문서를 따라하면 된다.

v1.11 → v1.13

1. 업그레이드 정보 확인

# OS 종류/버전 확인
cat /etc/*release*

kubeadm upgrade plan

명령 실행시 업그레이드 관련 정보 얻을 수 있음(현재 버전, 최신 버전 .. )
어떤 버전으로 업그레이드 할 수 있는지 확인 가능

주의) kubeadm은 kubelet을 설치하거나 업그레이드 하지 않음

2. 마스터 노드 kubeadm 업그레이드

먼저 마스터 노드의 kubeadm 부터 업그레이드하기

apt-get upgrade -y kubeadm=1.12.0-00

# kubeadm 버전 업그레이드
kubeadm upgrade apply v1.12.0

# 그러나 여전히 v1.11.3으로 표기됨
# 왜냐하면 여기 표기되는 버전은 각 노드의 kubelet 버전이기 때문임
# 다만 kubelet 제외한 나머지 컴포넌트는 v1.12로 업그레이드 된 상태임
kubectl get nodes
----------------------
NAME    ... VERSION
master.     v.1.11.3
node-1      v.1.11.3
node-2      v.1.11.3

3. 마스터 노드 kubelet 업그레이드

3번은 만약 마스터 노드에 kubelet이 존재한다면 수행할 것!

그 다음 마스터 노드의 kubelet 업그레이드하기

# 마스터 노드 drain
kubectl darin controlplane --ignore-daemonsets

# 업글 버전 패키지 다운로드 
apt-get upgrade -y kubelet=1.12.0-00
systemctl restart kubelet

# kubelet 업그레이드하니 마스터노드 버전 변경 확인
kubectl get nodes
----------------------
NAME    ... VERSION
master.     v.1.12.0
node-1      v.1.11.3
node-2      v.1.11.3

# 노드에 스케줄링 가능하도록 설정
kubectl uncordon controlplane

4. 워커 노드 kubeadm, kubelet 업그레이드

마스터 노드의 업그레이드 작업 완료 후, 워커 노드 업그레이드하기

# kubeadm 패키지 다운로드
apt-get upgrade -y kubeadm=1.12.0-00

# kubelet 버전 업그레이드
kubeadm upgrade node config --kubelet-version v.1.12.0

# drain 명령어로 업글 대상 노드의 파드를 다른 노드로 보내버림
kubectl drain node-1 --ignore-daemonsets

# kubelet 패키지 다운로드
apt-get upgrade -y kubelet=1.12.0-00

# kubelet 재시작
systemctl restart kubelet

# 노드에 스케줄링 가능하도록 설정
kubectl uncordon node-1

위의 과정을 2번 노드, 3번 노드에서 순서대로 수행한다.

profile
무설탕 음료를 좋아합니다

0개의 댓글