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