반응형
Intro
- Node의 OS 업그레이드 작업을 해야할때 Node를 중단해야하는 경우가 발생할 수 있습니다.
- 이 경우 해당 Node에 생성되어있는 pod를 안전하게 다른 Node로 옮기는 작업을 해야합니다.(drain)
- 또한 더이상 pod가 스케줄링 되지 않도록 설정을 해야하며 (cordan)
- 업데이트가 끝나고나면 Node가 원래대로 돌아왔을때 pod가 스케줄링 되도록 설정을 해주어야 합니다.(uncordan)
- 오늘은 위 작업을 어떻게해야하는지 정리해보도록 하겠습니다.
Cluster upgrade 전략
Master Node 업데이트
- k8s 스케줄러 및 컨트롤러 관리자가 잠시 중단됨
- 새 pod를 배포하거나, 기존 pod를 삭제, 수정 할수 없음
- 단, WorkerNode에서 동작하는 워크로드는 그대로 서비스됨
Worker Node 업데이트
- 전략1: 모든 노드를 중지하고 한번에 업데이트하는 전략
- 전략2: 한 노드의 pod를 다른노드에 옮긴 뒤 하나씩 업데이트 하는 전략
- 전략3: 업데이트된 새로운 노드를 생성하여 pod을 옮기는 전략
Master Node Upgrade
Node drain (drain시 자동으로 cordon 됨)
kubectl drain controlplane
kubeadm 버전확인
kubeadm version
패키지 업데이트
apt update
kubeadm 새 버전 설치
apt-get upgrade kubeadm=1.20.0-00
# version예시 : 1.20.0-00
# [major].[minor].[patch]-00
kubeadm 업그레이드
kubeadm upgrade apply v1.20.0
version예시 : v1.20.0
v[major].[minor].[patch]
kubeadm 버전 확인
kubeadm version
kubelet 버전확인
kubelet --version
kubelet 새 버전 설치
apt-get upgrade kubelet=1.20.0-00
version예시 : 1.20.0-00
[major].[minor].[patch]-00
Node uncordon
kubectl uncordon controlplane
Workder Node Upagrade
Node drain (drain시 자동으로 cordon 됨)
kubectl drain node01
Worker Node에 접속
ssh node01
kubeadm 업그레이드
kubeadm upgrade node
kubeadm 버전 확인
kubeadm version
kubelet 버전확인
kubelet --version
kubelet 새 버전 설치
apt-get upgrade kubelet=1.20.0-00
version예시 : 1.20.0-00
[major].[minor].[patch]-00
Master Node로 접속
exit
Node uncordon
kubectl uncordon node01
ECTDCTL을 이용한 backup and restore
export ETCDCTL_API=3
etcdctl version
etcdctl snapshot save <file_path> \
--cacert \
--cert \
--key
etcdctl snapshot restore -h
반응형
'IT > Kubernetes' 카테고리의 다른 글
[CKA독학]configmap/secret 사용법 (0) | 2021.06.11 |
---|---|
[CKA독학]docker CMD/ENTRYPOINT 의 차이와 kubernetes command/args 관계 (0) | 2021.06.07 |
[CKA독학]kubernetes Static pod/multi scheduler 정리 (0) | 2021.06.03 |
[CKA독학]kubernetes Resource Requests/Limits요약 정리 (0) | 2021.06.03 |
[CKA독학]kubernetes 스케줄링 정리(taint&tolerations/NodeSelector/NodeAffinity) (0) | 2021.06.02 |