Net Eng

[CKA] - Kubernetes Upgrade 본문

Cloud/Kubernetes

[CKA] - Kubernetes Upgrade

欲心 2024. 1. 23. 17:32

[선수 지식]
Kubernetes Cluster Upgrade 
* Master Node(Controlplane) -> Upgrade(v1.
* Worker Node -> Upgrade

Kubernetes Cluster Component
* Controlplane(apiserver, etcd, scheduler, controller, ..)
* Worker node(kubelet, kube-proxy, container runtime, ..) 

 


 

[선수 작업]

kubectl config set-context k8s-master --user=kubernetes-admin --cluster=kubernetes

 


 

[문제]

  • 작업 클러스터: k8s-master
  • Given an existing Kubernetes cluster running version 1.22.4, upgrade all of the Kubernetes control plane and node components on the master node only to version 1.23.3. Be sure to drain the master node before upgrading it and uncordon it after the upgrade.
  • [주의] 실습에서는 v1.28.4 → v1.28.6 업그레이드 하는 과정을 진행한다.
  • [주의] 실습에서는 k8s-master가 아니라 controlplane으로 작업을 진행한다.

 

[풀이]

kubectl config use-context k8s-master

* k8s-master 클러스터 사용

 

kubectl get nodes

* 버전 확인

 

1.28.4 버전 확인

 

apt update
apt-cache madison kubeadm

* 업데이트 가능 목록 확인

 

apt-mark unhold kubeadm && \
> apt-get update && apt-get install -y kubeadm=1.28.6-00 && \
> apt-mark hold kubeadm

* kubeadm 업데이트

 

kubeadm version

* 버전 확인

 

kubeadm upgrade plan 1.28.6

* 업그레이드 계획 확인

 

kubeadm upgrade apply 1.28.6

* 업그레이드 실행

 

kubectl drain controlplane --ignore-daemonsets

* controlplane 드레인

 

apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.28.6-1.1 kubectl=1.28.6-1.1 && \
apt-mark hold kubelet kubectl

*  kubelet과 kubectl 업그레이드

 

sudo systemctl daemon-reload
sudo systemctl restart kubelet

* kubelet 재실행

 

kubectl uncordon controlplane

* uncordon 명령어로 다시 스케줄링

 

kubectl get nodes

* 업그레이된 버전 확인

 

1.28.6 버전 확인

 

* 주의사항 *

- 실제 테스트에서는master노드에 접속하여 위 과정을 실행해야 하며 drain과 uncordon은 exit로 빠져 나와 작업을 진행해야 한다. 


[참고]

 

kubeadm 클러스터 업그레이드

이 페이지는 kubeadm으로 생성된 쿠버네티스 클러스터를 1.28.x 버전에서 1.29.x 버전으로, 1.29.x 버전에서 1.29.y(여기서 y > x) 버전으로 업그레이드하는 방법을 설명한다. 업그레이드가 지원되지 않는

kubernetes.io