!!! 중요 !!!
Kubernetes의 버전은 반드시 순차적으로 Upgrade 해야 한다.
(ex: v1.25의 경우 v1.25 → v1.26 → v1.27 ... 순으로 해야 함)
Control Plane (Master) Node와 Worker Node를 같이 Upgrade 해야 한다.
(ex: Worker Node가 v1.25 인 경우 Control Plane은 v1.27 이상으로 하려면 Error 발생)
Upgrade 환경 및 버전
- Rocky Linux 9.3
- Linux 5.14 el9 x86_64
- kubeadm v1.26.14 (Control Plane Node)
- kubeadm v1.25.16 (Worker Node)
- kubelet v1.25.16 (Worker Node)
1. 설치된 kubernetes 버전 확인
- kubeadm 버전 확인
kubeadm version
- kubelet 버전 확인
kubelet --version
- Node 확인
kubectl get nodes
2. Kubeadm Upgrade
- yum repo 등록
(본 포스팅에서 설치된 kubernetes는 1.25이므로 1.26으로 upgrade 한다. 다른 버전의 경우 baseurl과 gpgkey의 v1.26을 변경하면 된다.)
sudo cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.26/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.26/rpm/repodata/repomd.xml.key
EOF
- install 할 kubeadm 버전 확인
yum list --showduplicates kubeadm --disableexcludes=kubernetes
- kubeadm 다운로드
yum install -y kubeadm-1.26.14-150500.1.1 --disableexcludes=kubernetes
- 다운로드된 kubeadm 버전 확인
kubeadm version
만약 kubeadm 버전이 변경이 안된다면 다운로드한 kubeadm과 기존의 kubeadm의 경로가 다를 수 있다.
(yum으로 설치된 kubeadm은 /usr/bin/kubeadm 에 있다.)
kubespray 같은 방법으로 cluster를 설치했다면 /usr/local/bin에 있을 가능성이 높다. (which 명령으로 확인)
이런 경우 기존 kubeadm 바이너리의 이름을 변경하고 세션 재접속을 하면 된다.
추가로 kubeadm이 경로가 다르다면 kubelet도 같은 작업을 할 가능성이 높으므로 미리 하는 게 좋다.
(필자는 Worker Node에 kubectl을 설치하지 않아서 kubectl은 건너뛰지만 kubectl을 사용하는 Worker Node라면 같이 하는 것이 좋다.)
- Kubeadm Upgrade 실행
(★ node 이름을 넣는 게 아니라 아래 명령어를 그대로 써야 한다. ★ )
kubeadm upgrade node
3. Kubelet Upgrade
kubectl 명령을 사용할 수 있는 환경을 준비해야 한다.
- Node 드레인 (kubectl 가능한 곳에서 해야 한다.)
kubectl drain <NodeName> --ignore-daemonsets
- Node 상태 확인
kubectl get nodes
- Kubelet 다운로드
yum install -y kubelet-1.26.14-150500.1.1 --disableexcludes=kubernetes
- 다운로드된 Kubelet 버전 확인
kubelet --version
- Kubelet Upgrade
systemctl daemon-reload
systemctl restart kubelet
- Node Uncordon
kubectl uncordon <NodeName>
- Kubelet Upgrade 확인
kubectl get nodes
참고 사이트
반응형
'Kubernetes > 실습' 카테고리의 다른 글
[Kubernetes] 쿠버네티스 구축 총 정리 (containerd) (2) | 2024.11.02 |
---|---|
[Kubernetes] Control plane (master) node upgrade (0) | 2024.03.14 |
[kubernetes] control-plane(master) node 설치 과정(cri-o) (0) | 2024.03.13 |
[Kubernetes] kubespray 를 사용한 k8s 설치 (2) | 2023.05.15 |