Recent Comments
Link
Recent Posts
Today
Total
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
관리 메뉴

Study Memory Work

[K8S/CKA 자격증] Kubernetes Cluster upgrade (문제O) 본문

Infra/Kubernetes

[K8S/CKA 자격증] Kubernetes Cluster upgrade (문제O)

Hera Choi 2023. 1. 12. 22:02

Kubernetes Packages 구성요소

kubeadm : 클러스터를 부트스트랩하는 명령
kubelet : PodContainer시작과 같은 작업을 수행하는 컴포넌트
kubectl : 클러스터와 통신하기 위한 커맨드 라인 유틸리티

Kubernetes Cluster upgrade

- 현재 운영중인 버전보다 높은 버전을 설치하는 것.
- 종류 : 

  • Master(Control plane) node upgrade
  • Worker node upgrade

Kubernetes Cluster upgrade 실습

 

Upgrading kubeadm clusters

This page explains how to upgrade a Kubernetes cluster created with kubeadm from version 1.25.x to version 1.26.x, and from version 1.26.x to 1.26.y (where y > x). Skipping MINOR versions when upgrading is unsupported. For more details, please visit Versio

kubernetes.io

upgrade 관련 documents

Control plane upgrade

kubeadm, kubelet, kubectl을 업그레이드 해야한다.

( 예시 : 1.22.4에서 1.23.3 버전으로 )

위 문서를 순서대로 따라가면 된다. 아래 코드는 위 문서를 따라 나열한 것임.

# 1.23.3 버전으로 업그레이드 예시.
# OS는 CentOS

# 1. Upgrade할 master에 접속 : ssh <master>

# 2. 업그레이드 할 버전 확인
$ sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes | tail -5

# 3. kubeadm 업그레이드 
#		--> Master 컴포넌트(etcd, api, controller 등 컨테이너로 동작중인 pods)들을 업그레이드 해주는 작업
$ sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes

	# kubeadmin 버전 확인
$ kubeadm version
	# 업그레이드 계획 확인
$ sudo kubeadm upgrade plan v1.23.3
	# 업그레이드 실행
$ sudo kubeadm upgrade apply v1.23.3

# 4. 노드 드레인 : console이나 master에서 실행
# etcd, api, controller 등 컨테이너로 동작중인 pods들을 전부 삭제하여 비워주는 작업
$ kubectl drain {MasterNode name} --ignore-daemonsets

# 5. kubelet과 kubectl 업그레이드
$ sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet

# 6. 노드 uncordon (노드 드레인 작업에서 스케줄링 금지 기능을 풀어주는 것)
$ kubectl uncordon {MasterNode name}

# 7. 업그레이드 여부 확인
$ kubectl get nodes

 

Worker node upgrade

마찬가지로 kubeadm, kubelet, kubectl을 업그레이드 해야한다.

# 1.23.3 버전으로 업그레이드 예시.
# OS는 CentOS

# 1. Upgrade할 worker node 접속 : 
$ ssh {worker node name}

# 2. kubeadm 업그레이드 
$ sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes

# 3. 업그레이드 실행 ----------> *Control plane Upgrade와 유일하게 다른 부분!!
$ sudo kubeadm upgrade node

# 3. 노드 드레인
	# console에서 진행해야 함
$ exit
	# 노드 드레인
$ kubectl drain {WorkerNode name} --ignore-daemonsets
	# 확인
$ kubectl get nodes
	# 다시 worker node 접속
$ ssh {worker node name}

# 4. kubelet과 kubectl 업그레이드
$ sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet

# 5. 노드 uncordon (노드 드레인 작업에서 스케줄링 금지 기능을 풀어주는 것)
$ kubectl uncordon {WorkerNode name}

# 6. 업그레이드 여부 확인
$ kubectl get nodes

기출문제

[문제2]

작업 클러스터 : k8s
마스터 노드의 모든 Kubernetes control plane및 node 구성 요소를 버전 1.23.3으로 업그레이드합니다. master 노드를 업그레이드하기 전에 drain 하고 업그레이드 후에 uncordon해야 합니다.