kubeadm, kubelet, kubectl을 1.22.4에서 1.23.3 버전으로 업그레이드하기% kubectl config use-context hk8s
Switched to context "hk8s".
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
hk8s-m Ready control-plane,master 167d v1.22.4
hk8s-w1 Ready <none> 167d v1.22.4
hk8s-w2 NotReady <none> 158d v1.22.4
OS를 확인합니다.
% sudo cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
이제부터 OS에 맞는 명령어로 명령을 수행합니다.
(저는 CentOS이므로 yum 명령을 사용합니다)
쿠버네티스의 가장 최근 패치 버전에 대한 리스트를 불러옵니다.
% sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes
...
kubeadm.x86_64 1.21.4-0 kubernetes
kubeadm.x86_64 1.21.5-0 kubernetes
kubeadm.x86_64 1.21.6-0 kubernetes
kubeadm.x86_64 1.21.7-0 kubernetes
kubeadm.x86_64 1.21.8-0 kubernetes
kubeadm.x86_64 1.21.9-0 kubernetes
kubeadm.x86_64 1.22.0-0 kubernetes
kubeadm.x86_64 1.22.1-0 kubernetes
kubeadm.x86_64 1.22.2-0 kubernetes
kubeadm.x86_64 1.22.3-0 kubernetes
kubeadm.x86_64 1.22.4-0 kubernetes
kubeadm.x86_64 1.22.5-0 kubernetes
kubeadm.x86_64 1.22.6-0 kubernetes
kubeadm.x86_64 1.23.0-0 kubernetes
kubeadm.x86_64 1.23.1-0 kubernetes
kubeadm.x86_64 1.23.2-0 kubernetes
kubeadm.x86_64 1.23.3-0 kubernetes
불러온 리스트의 제일 마지막 줄의 버전을 이용해 업그레이드를 진행합니다.
% sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
kubeadm 버전을 확인합니다. GitVersion의 값을 확인합니다.
% kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3", GitCommit:"816c97ab8cff8a1c72eccca1026f7820e93e0d25", GitTreeState:"clean", BuildDate:"2022-01-25T21:24:08Z", GoVersion:"go1.17.6", Compiler:"gc", Platform:"linux/amd64"}
업그레이드 계획을 확인합니다.
(Master node에서만 실행하는 내용입니다)
% sudo kubeadm upgrade plan v1.23.3
업그레이드를 적용합니다.
(Master node에서만 실행하는 내용입니다)
% sudo kubeadm upgrade apply v1.23.3
...
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.23.3". Enjoy!
[upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
노드를 드레인합니다. kubelet과 kubectl을 업그레이드하기 위해서 Master node에 작동하고 있는 파드들을 드레인 명령으로 싹 비워줍니다.
% sudo kubectl drain hk8s-m --ignore-daemonsets
kubelet과 kubectl를 업그레이드합니다.
% sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
kubelet을 재시작합니다.
% sudo systemctl daemon-reload
% sudo systemctl restart kubelet
uncordon 명령을 실행해 중단시켰던 Master node의 파드들을 다시 실행시킵니다.
% kubectl uncordon hk8s-m
node/hk8s-m uncordoned
Master node가 업그레이드 되었는지 확인합니다.
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
hk8s-m Ready control-plane,master 167d v1.23.3
hk8s-w1 Ready <none> 167d v1.22.4
hk8s-w2 NotReady <none> 158d v1.22.4
hk8s-w1 워커 노드로 접속합니다.
% ssh hk8s-w1
최신 버전의 kubeadm을 설치합니다.
% sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
노드를 업그레이드합니다.
% sudo kubeadm upgrade node
...
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.
노드를 드레인합니다. kubelet과 kubectl을 업그레이드하기 위해서 worker node를 드레인 명령으로 스케줄링이 불가능하도록 중단합니다.
% sudo kubectl drain hk8s-w1 --ignore-daemonsets
hk8s-w1의 노드가 SchedulingDisabled인 상태인 것으로 보아 드레인이 정상적으로 이루어졌습니다.
% sudo kubectl get nodes
NAME STATUS ROLES AGE VERSION
hk8s-m Ready control-plane,master 167d v1.23.3
hk8s-w1 Ready,SchedulingDisabled <none> 167d v1.22.4
hk8s-w2 NotReady <none> 158d v1.22.4
kubelet과 kubectl를 업그레이드합니다.
% sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
kubelet을 재시작합니다.
% sudo systemctl daemon-reload
% sudo systemctl restart kubelet
uncordon 명령을 실행해 중단시켰던 worker node를 다시 스케줄링이 가능한 온라인 상태로 만듭니다.
% $ sudo kubectl uncordon hk8s-w1
node/hk8s-w1 uncordoned
worker node가 업그레이드 되었는지 확인합니다.
% sudo kubectl get nodes
NAME STATUS ROLES AGE VERSION
hk8s-m Ready control-plane,master 167d v1.23.3
hk8s-w1 Ready <none> 167d v1.23.3
hk8s-w2 NotReady <none> 158d v1.22.4