쿠버네티스는 활발하게 유지 보수되는 프레임워크이므로 이에 맞춰 운영자는 주기적으로 버전 업그레이드를 수행해줘야한다. 쿠버네티스의 버전은 api-server
를 기준으로 하고, 이에 따라 컴포넌트 간 지원 버전이 결정된다.
버전 표기 방법: x(major).y(minor).z(patch)
클러스터 업그레이드 방식은 초기 배포방법에 의존적이다. 즉, kubeadm으로 배포했다면 kubeadm으로, 수동으로 구성했다면 절차에 따라 수동으로 업그레이드해야한다.
이 글에서는 kubeadm을 사용하여 클러스터를 1.25.0에서 1.26.0으로 업그레이드하는 방법에 대해 다룬다.
대략적인 업그레이드 순서는 다음과 같다.
drain
하기kubeadm
업그레이드kubelet,kubectl
업그레이드kubelet
재시작uncordon
k get no
NAME STATUS ROLES AGE VERSION
controlplane Ready control-plane 81m v1.25.0
node01 Ready <none> 80m v1.25.0
kubectl drain controlplane --ignore-daemonsets
apt update
apt-get install kubeadm=1.26.0-00
kubeadm upgrade plan v1.26.0
kubeadm upgrade apply v1.26.0
apt-get install kubelet=1.26.0-00
systemctl daemon-reload
systemctl restart kubelet
kubectl uncordon controlplane
kubeadm upgrade apply
는 클러스터가 업그레이드 가능한 상태인지 확인하고 버전 차이(skew) 정책을 적용한다.
kubeadm upgrade 명령 시 Master Node에서 관리하는 인증서를 자동으로 갱신하는데, 인증서 갱신을 하지 않으려면 --certificate-renewal=false 플래그를 사용하면 된다.
kubectl drain node01 --ignore-daemonsets
ssh node01
# 여기서부터는 node01 위에서 이루어진다.
apt update
apt-get install kubeadm=1.26.0-00
kubeadm upgrade node
systemctl daemon-reload
systemctl restart kubelet
exit
# 다시 node01 밖에서 진행
kubectl uncordon node01
kubeadm upgrade node
는 워커 노드에서 다음을 수행한다.
정상적으로 업그레이드가 완료되면 노드의 버전이 1.26.0으로 바뀐 것을 확인할 수 있다.
k get no
NAME STATUS ROLES AGE VERSION
controlplane Ready control-plane 81m v1.26.0
node01 Ready <none> 80m v1.26.0
etcd Backup & Restore (0) | 2023.02.13 |
---|
댓글 영역