DevOps

CKA 예제 리마인더 - 19. Cluster Upgrade Process

Vince_rf 2024. 11. 3. 03:21

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

controlplane 노드를 1.31.0 버전으로 업그레이드 하세요

Controlplane Node Upgraded to v1.31.0

Controlplane Kubelet Upgraded to v1.31.0






kubectl drain controlplane --ignore-daemonsets

sudo apt update

에러 발생

W: GPG error: https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.30/deb InRelease: The following signatures were invalid: EXPKEYSIG 234654DA9A296436 isv:kubernetes OBS Project <isv:kubernetes@build.opensuse.org>
E: The repository 'https://pkgs.k8s.io/core:/stable:/v1.30/deb InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

다시

sudo apt-get update

sudo apt-cache madison kubeadm

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

kubeadm version
# 결과값
kubeadm version: &version.Info{Major:"1", Minor:"31", GitVersion:"v1.31.0", GitCommit:"9edcffcde5595e8a5b1a35f88c421764e575afce", GitTreeState:"clean", BuildDate:"2024-08-13T07:35:57Z", GoVersion:"go1.22.5", Compiler:"gc", Platform:"linux/amd64"}

sudo kubeadm upgrade plan

Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT   NODE           CURRENT   TARGET
kubelet     controlplane   v1.30.0   v1.31.2
kubelet     node01         v1.30.0   v1.31.2

Upgrade to the latest stable version:

COMPONENT                 NODE           CURRENT    TARGET
kube-apiserver            controlplane   v1.30.0    v1.31.2
kube-controller-manager   controlplane   v1.30.0    v1.31.2
kube-scheduler            controlplane   v1.30.0    v1.31.2
kube-proxy                               1.30.0     v1.31.2
CoreDNS                                  v1.10.1    v1.11.1
etcd                      controlplane   3.5.12-0   3.5.15-0

잘 적용됨

sudo kubeadm upgrade apply v1.31.0

좀 걸린다.

[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.31.0". Enjoy!

굿

다되면 이제 kubelet을 업그레이드하자

sudo apt-mark unhold kubelet && \
sudo apt-get update && sudo apt-get install -y kubelet='1.31.0-*' && \
sudo apt-mark hold kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

kubectl uncordon controlplane




워커 노드도 업그레이드하세요

Worker Node Upgraded to v1.31.0



kubectl drain node01 --ignore-daemonsets

ssh node01

sudo apt upgrade

W: GPG error: https://prod-cdn.packages.k8s.io/repositories/isv:/kubernetes:/core:/stable:/v1.30/deb InRelease: The following signatures were invalid: EXPKEYSIG 234654DA9A296436 isv:kubernetes OBS Project <isv:kubernetes@build.opensuse.org>
E: The repository 'https://pkgs.k8s.io/core:/stable:/v1.30/deb InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.



curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

다시

sudo apt-get update

sudo apt-cache madison kubeadm

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

kubeadm version
# 결과값
kubeadm version: &version.Info{Major:"1", Minor:"31", GitVersion:"v1.31.0", GitCommit:"9edcffcde5595e8a5b1a35f88c421764e575afce", GitTreeState:"clean", BuildDate:"2024-08-13T07:35:57Z", GoVersion:"go1.22.5", Compiler:"gc", Platform:"linux/amd64"}

sudo kubeadm upgrade node

sudo apt-mark unhold kubelet && \
sudo apt-get update && sudo apt-get install -y kubelet='1.31.0-*' && \
sudo apt-mark hold kubelet

sudo systemctl daemon-reload
sudo systemctl restart kubelet

 

controlplane으로 돌아와서

kubectl get node 로 VERSION확인

kubectl uncordon node01