[22] Kubernetes Upgrade
❓Cluster Upgrade - only Master
- upgrade system: 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 version1.23.3 - Be sure to
drainthemasternode before upgrading it anduncordonit after the upgrade.
Reference
docs에서 upgrade kubeadm 검색
실습
[user@console ~]$ kubectl config use-context k8s
[user@console ~]$ ssh k8s-master
[user@k8s-master ~]$ sudo -i
# 시험환경은 ubuntu 환경이니까 헷갈려 하지 않기
# Ubuntu
[root@k8s-master ~]# apt-update
[root@k8s-master ~]# apt-cache madison kubeadm
# Ubuntu
[root@k8s-master ~]# apt-mark unhold kubeadm && \\
apt-get update && apt-get install -y kubeadm=1.23.3-00 && \\
apt-mark hold kubeadm
# v1.23.3 버전으로 업그레이드 할 수 있는 master component 목록 확인
[root@k8s-master ~]# kubeadm upgrade plan v1.23.3
[root@k8s-master ~]# sudo kubeadm upgrade apply v1.23.3
# 현재 우리는 문제에서 요구한대로 k8s-master로 ssh를 통해 들어와서 작업중인데
# 이 마스터노드를 master노드를 drain 하는 작업을 해야하기 때문에
# exit로 console로 나와서 작업해줘야 한다.
[root@k8s-master ~]# exit
[user@k8s-master ~]$ exit
[user@console ~]$ kubectl drain k8s-master --ignore-daemonsets
# 이제 다시 마스터 노드로 들어간다
[user@console ~]$ ssh k8s-master
# Ubuntu
[user@k8s-master ~]$ sudo apt-mark unhold kubelet kubectl && \\
apt-get update && \\
apt-get install -y kubelet=1.23.3-00 kubectl=1.23.3-00 && \\
apt-mark hold kubelet kubectl
[user@k8s-master ~]$ sudo -i
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart kubelet
# 이제 다 끝나서 다시 콘솔로 나온 후에 언코던을 해준다
[root@k8s-master ~]# exit
[user@k8s-master ~]$ exit
[user@console ~]$ kubectl uncordon k8s-master
[user@console ~]$ kubectl get nodes
기출문제
upgrade system : k8s-worker1, k8s-worker2 k8s 클러스터의 모든 worker를 1.23.3 으로 업그레이드 하시오.
-
답안
# Ubuntu 환경 kubectl config use-context k8sssh k8s-worker1 sudo -iapt-mark unhold kubeadm && \\ apt-get update && apt-get install -y kubeadm=1.23.3-00 && \\ apt-mark hold kubeadmsudo kubeadm upgrade node# console 창으로 이동 exitkubectl drain k8s-worker1 --ignore-daemonsetsssh k8s-worker1apt-mark unhold kubelet kubectl && \\ apt-get update && apt-get install -y kubelet=1.23.3-00 kubectl=1.23.3-00 && \\ apt-mark hold kubelet kubectlsudo systemctl daemon-reload sudo systemctl restart kubelet# console 창으로 이동 exitkubectl uncordon k8s-worker1 --> k8s-worker2도 동일하게 진행kubectl get nodes --> 노드 버전 확인
기출문제 (25번)
Given an existing Kubernetes cluster running version 1.20.0, upgrade all of the Kubernetes control plane and node components on the master node only to version 1.20.1. Be sure to drain the master node before upgrading it and uncordon it after the upgrade.
You are also expected to upgrade kubelet and kubectl on the master node.
- 답안
kubectl get nodes --> node 이름 확인ssh {Node 이름} sudo -i# Ubuntu 버전 apt updateapt-cache madison kubeadmapt-mark unhold kubeadm && \\ apt-get update && apt-get install -y kubeadm=1.20.1-00 && \\ apt-mark hold kubeadmkubeadm versionkubeadm upgrade plansudo kubeadm upgrade apply v1.20.1# console 창으로 이동 exitkubectl drain <node-to-drain> --ignore-daemonsetsssh {Node 이름}apt-mark unhold kubelet kubectl && \\ apt-get update && apt-get install -y kubelet=1.20.1-00 kubectl=1.20.1-00 && \\ apt-mark hold kubelet kubectlsudo systemctl daemon-reload sudo systemctl restart kubelet# console 창으로 이동 exitkubectl uncordon <node-to-drain># 버전 확인 kubectl get nodes -> 업그레이드 한 Node 버전 확인