환경
- 환경 : Ubuntu (KodeKloud 제공)
- controlplane, node01 노드 2개 / blue applicaion pod 3개 / 기존 kube 버전 1.26.0
버전 확인
- kubectl get node
- kubeadm version
- kubectl version --short
사전 확인 사항
- 클러스터 내 업그레이드 대상 노드 확인
kubectl get node - host workload 가능 여부 확인 하기 : taint가 none 이면 가능한 상태
kubectl describe node controlplane | grep -i taint
kubectl describe node node01 | grep -i taint - 업그레이드 가능한 버전 확인
kubectl upgrade plan
- latest 버전 확인 가능 (remote version 확인 : v1.28.1)
- 현재 버전에서 가장 최신 버전 확인 가능 (Target version 확인 : v1.26.8) - 순서는 컨트롤플레인 노드 먼저 업그레이드! 그 다음 워커 노드들 업그레이드 진행
컨트롤 플레인 노드 업그레이드
- 컨트롤플레인 drain (unschedulable 상태로 변경)
kubectl drain controlplane --ignore-daemonsets
→ Ready,SchedulingDisabled 상태 확인 - 컨트롤 플레인 업그레이드
apt update (또는 apt-get update 수행 / 공식 리포지토리에서 사용 가능한 소프트웨어 패키지 목록을 업데이트)
컨트롤 플레인 노드와 kubelet 모두 업그레이드!
apt-get install kubeadm=1.27.0-00
apt-get install kubelet=1.27.0-00
kubeadm upgrade apply v1.27.0 - 데몬 리로드
systemctl daemon-reload - kubelet 리스타트
systemctl restart kubelet - 컨트롤 플레인 다시 schedule 상태로 변경
kubectl uncordon controlplane
노드 업그레이드
- 노드를 unschedulable 상태로 변경
kubectl drain noe01--ignore-daemonsets - 노드로 접속
ssh node01 - 컨트롤플레인과 동일하게 업그레이드 진행
apt-get update
apt-get install kubeadm=1.27.0-00
kubeadm upgrade node
apt-get instll kubelet=1.27.0-00 - kubelet 리스타트
systemctl daemon-reload
systemctl restart kubelet - 노드 접속에서 빠져나와 컨트롤 플레인으로 이동~ (exit)
- 컨트롤플레인에서 node01를 다시 schedulable로 변경
kubectl uncordon node01