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