쿠버네티스(kubernetes)/CKA 준비

[ITExam-CKA] 3. Kubernetes Upgrade - 클러스터 버전 업그레이드 실습

토끼C 2025. 2. 5. 21:15
반응형

https://www.itexams.com/exam/CKA

 

CKA Exam - Free Questions and Answers - ITExams.com

 

www.itexams.com

ITExams에서 CKA 자격증 취득을 위한 무료 문제를 제공한다.

 

3번 문항 클러스터 버전 업그레이드 문제에 대한 풀이 방법을 공유하고자 한다.

 

 

가장 먼저 아래처럼 context를 설정하라는 내용을 볼 수 있다.


SIMULATION -

Set configuration context: 

kubectl config use-context mk8s

 

쿠버네티스에서 클러스터를 관리할 때, 사용할 환경을 설정하는 것이다.

 

위의 내용은 'mk8s라는 이름의 context를 사용하겠다'는 의미이다.

 

아래부터는 문제 내용이다.


[문제]

Task -
Given an existing Kubernetes cluster running version 1.22.1, upgrade all of the Kubernetes control plane and node components on the master node only to version 1.22.2.
Be sure to drain the master node before upgrading it and uncordon it after the upgrade.

 

그 아래에는 ssh로 master node에 접속하는 방법과 sudo -i로 sudo 권한을 얻는 방법이 나와있다.

kubeadm 명령어를 사용하기 위해서는 해당 노드에 직접 접속하여 sudo권한으로 업그레이드 명령어를 수행해야 하기 때문이다.

 

다른 애드온은 업그레이드 하면 안됨.


[해설]

- 버전 1.22.1을 실행하는 기존 쿠버네티스 클러스터가 있는 경우 마스터 노드의 모든 쿠버네티스 control plane과 node 구성 요소를 버전 1.22.2로만 업그레이드해라.
- 업그레이드 전 반드시 마스터 노드를 drain하고 업그레이드 후에는 uncordon해라


[작업 목록]

1. drain, uncordon, upgrade 명령어 사용법 찾기

2. 노드 조회

3. 노드 drain

4. node component 업그레이드

5. control plane 업그레이드

6. 노드 uncordon

 

 

 

 

1. drain, uncordon, upgrade 명령어 사용법 찾기

 

CKA 시험 응시할 때는 아래 세개의 쿠버네티스 공식 문서를 사용할 수 있다.

https://kubernetes.io/docs/
https://kubernetes.io/blog/
https://kubernetes.io/zh/docs/

 

이 중 drainuncordon명령어 목록들을 아래 링크에서 볼 수 있다.

https://kubernetes.io/docs/ >  Reference > Command line Tool (kubectl) > kubectl Commands 로 접속한다.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

 

 

upgrade 명령어는 administer 목록에서 볼 수 있다.

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

 

control plane과 drain 후 업그레이드 하는 명령어를 찾을 수 있다.

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#drain-the-node

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#upgrading-control-plane-nodes

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#uncordon-the-node

 

 

2. 노드 조회

k get nodes

- 위 명령어로 노드 조회

NAME            STATUS   ROLES             AGE    VERSION
mk8s-master-0   Ready    control-plane     636d    v1.26.0

- 이렇게 노드 조회하면 노드 목록을 확인할 수 있고, 버전도 확인할 수 있다.

- 노드가 여러개 조회되더라도, 마스터 노드에서만 수행하라했으니 마스터 노드에서만 작업을 해주면 된다.

 

 

 

3. 노드 drain

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#drain-the-node

 

Upgrading kubeadm clusters

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

kubernetes.io

- 위 링크에 있는 drain 명령어를 수행해주면 된다.

 

kubectl drain mk8s-master-0 --ignore-daemonsets

 

 

 

 

 

4. node component 업그레이드

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#drain-the-node

 

Upgrading kubeadm clusters

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

kubernetes.io

- drain 명령어 이후에 나오는 컴포넌트를 업그레이드 하기 위해서 먼저 마스터 노드에 접속 후 sudo권한으로 접속해야 한다. 방법은 문제에 함께 기재되어 있다.

ssh mk8s-master-0

- 마스터노드 접속

 

sudo -i

- sudo 권한으로 접속

 

apt-mark unhold kubelet kubectl && \
apt-get update && sudo apt-get install -y kubelet='1.22.2-00' kubectl='1.22.2-00' && \
apt-mark hold kubelet kubectl

- kublet과 kubectl 업그레이드

 

systemctl daemon-reload
systemctl restart kubelet

- kublet 재시작

 

 

5. control plane 업그레이드

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#upgrading-control-plane-nodes

 

- 위 링크에 나와있는 명령어를 수행해주면 된다.

apt-mark unhold kubeadm && \
apt-get update && sudo apt-get install -y kubeadm='1.22.2-00' && \
apt-mark hold kubeadm

- kubeadmin 업그레이드

 

kubeadm upgrade plan

- 현재 클러스터 상태를 확인 및 업그레이드 경로 점검

 

kubeadm upgrade apply v1.22.2

- 컨트롤 플레인 업그레이드

 

exit
exit

- sudo권한 접속과 마스터 노드에 접속에서 빠져나간다.

 

 

혹은 4번 5번 내용을 함께 수행해도 된다.

ssh mk8s-master-0

sudo -i

apt-mark unhold kubelet kubectl && \
apt-get update && sudo apt-get install -y kubeadm='1.22.2-00' kubelet='1.22.2-00' kubectl='1.22.2-00' && \
apt-mark hold kubelet kubectl

kubeadm upgrade plan
kubeadm upgrade apply v1.22.2

systemctl daemon-reload
systemctl restart kubelet

exit
exit

 

 

6. 노드 uncordon

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#uncordon-the-node

 

Upgrading kubeadm clusters

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

kubernetes.io

- 위의 링크에 나온 uncordon 명령어를 수행한다.

 

kubectl uncordon mk8s-master-0

- 노드의 스케줄링 활성화

 

kubectl get nodes

- 노드 상태를 조회하여, 스케쥴링 가능한 상태가 되었는지 확인한다.

 

 

 

여기까지가 문제풀이다.

 

 

 

 


[요약]

 

1. drain, uncordon, upgrade 명령어 사용법 찾기

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade

- 위 링크에 다 나와 있음

 

2. 노드 조회

kubectl get node

 

3. 노드 drain

kubectl drain mk8s-master-0 --ignore-daemonsets

 

4. node component 업그레이드 & 5. control plane 업그레이드

ssh mk8s-master-0

sudo -i

apt-mark unhold kubelet kubectl && \
apt-get update && sudo apt-get install -y kubeadm='1.22.2-00' kubelet='1.22.2-00' kubectl='1.22.2-00' && \
apt-mark hold kubelet kubectl

kubeadm upgrade plan
kubeadm upgrade apply v1.22.2

systemctl daemon-reload
systemctl restart kubelet

exit
exit

 

6. 노드 uncordon

 

kubectl uncordon mk8s-master-0
kubectl get nodes
반응형