✔️ k8s 클러스터 업그레이드
- kube-apiserver
- kube-controller-manager, kube-cloud-controller-manage, kube-scheduler
- kubelet(Control Plane → Worker Node)
- kube-proxy(Control Plane → Worker Node)
kube-apiserver
, kube-controller-manager
, kube-cloud-controller-manager
, kube-scheduler
이 구성요소들은 컨트롤 플레인에만 있다.
kubelet
컨트롤 플레인, 워커 노드 둘다 있는 구성요소이다.
원칙적으로 업그레이드 작업은 컨트롤 플레인에서 작업 후 워커 노드에서 작업한다.
해당되는 워커 노드의 Pod를 drain해야 한다.
마스터와 워커 노드들이 있을 때 kubelet을 업그레이드 한다는 것은 컨테이너 제어 시스템을 업그레이드한다는 의미이며 컨테이너가 중단되는 다운타임이 발생한다.
drain
이라는 것은 욕조의 물을 빼는 것을 의미하며, 해당되는 호스트에 컨테이너가 있으면 컨테이너를 제거한다는 의미이다.
컨테이너를 모두 정상적으로 중단시킨후 업그레이드를 해야한다.
기존의 컨테이너를 없애면 서비스에 문제가 생기지 않을까 ?
그래서 우리는 중복
을 제공한다.
2개의 워커 노드가 있을 때 복제본을 두면 한쪽에서 제거되어도 다른쪽에 서비스가 존재하기때문에 문제없다.
전체적으로 업그레이드 순서는 다음과 같다.
Control Plane(api → c-m, c-c-m, scheduler → kubelet, kube-proxy) →→ Work Node(kubelet, kube-proxy)
✔️ kubeadm 업그레이드
- Control Plane의 kubeadm 업그레이드
- Control Plane의 kubeadm으로 api, cm, sched 업그레이드
- Control Plane의 kubelet, kubectl 업그레이드
- Work Node의 kubeadm 업그레이드
- Work Node의 kubeadm으로 업그레이드
- Work Node의 kubelet, kubectl 업그레이드
✔️ 업그레이드 실행
k8s를 1.22.8 버전에서 1.22.9 버전으로 업그레이드한다.
✔️ Control Plane
✔️ kubeadm 업그레이드
sudo apt-mark unhold kubeadm
패키지 버전 hold 해제
sudo apt update
패키지 저장소 업데이트
sudo apt upgrade kubeadm=1.22.9-00 -y
1.22.9 버전 kubeadm 설치
kubeadm version
kubeadm 버전 확인
sudo apt-mark hold kubeadm
kubeadm 버전 hold
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.22.9
kubeadm upgrade
✔️ kubectl, kubectl 업그레이드
sudo apt-mark unhold kubelet kubectl
sudo apt upgrade kubectl=1.22.9-00 kubelet=1.22.9-00 -y
sudo apt-mark hold kubelet kubectl
kubelet --version
kubectl version
drain 작업
sudo systemctl daemon-reload
sudo systemctl restart kubelet
uncordon 작업
systemctl status kubelet
✔️ Work Node
✔️ kubeadm 업그레이드
sudo apt-mark unhold kubeadm
sudo apt update
sudo apt upgrade kubeadm=1.22.9-00 -y
kubeadm version
sudo apt-mark hold kubeadm
sudo kubeadm upgrade node
drain 작업
✔️ kubectl, kubectl 업그레이드
sudo apt-mark unhold kubelet kubectl
sudo apt upgrade kubectl=1.22.9-00 kubelet=1.22.9-00 -y
sudo apt-mark hold kubelet kubectl
kubelet --version
kubectl version
sudo systemctl daemon-reload
sudo systemctl restart kubelet
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubernetes Objects(오브젝트) (0) | 2022.05.16 |
---|---|
[Kubernetes] Kubespray로 쿠버네티스 설치하기 (0) | 2022.05.16 |
[Kubernetes] Worker Node 추가 구성하기 (0) | 2022.05.16 |
[Kubernetes] kubeadm을 사용한 K8s 설치 및 K8s 클러스터 생성 (0) | 2022.05.16 |
[Kubernetes] Kubernetes(쿠버네티스)란 ?! (0) | 2022.05.16 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!