Study Memory Work
[K8S/CKA 자격증] Kubernetes Cluster upgrade (문제O) 본문
Kubernetes Packages 구성요소
• kubeadm : 클러스터를 부트스트랩하는 명령
• kubelet : Pod와 Container시작과 같은 작업을 수행하는 컴포넌트
• kubectl : 클러스터와 통신하기 위한 커맨드 라인 유틸리티
Kubernetes Cluster upgrade
- 현재 운영중인 버전보다 높은 버전을 설치하는 것.
- 종류 :
- Master(Control plane) node upgrade
- Worker node upgrade
Kubernetes Cluster upgrade 실습
Upgrading kubeadm clusters
This page explains how to upgrade a Kubernetes cluster created with kubeadm from version 1.25.x to version 1.26.x, and from version 1.26.x to 1.26.y (where y > x). Skipping MINOR versions when upgrading is unsupported. For more details, please visit Versio
kubernetes.io
upgrade 관련 documents
Control plane upgrade
kubeadm, kubelet, kubectl을 업그레이드 해야한다.
( 예시 : 1.22.4에서 1.23.3 버전으로 )
위 문서를 순서대로 따라가면 된다. 아래 코드는 위 문서를 따라 나열한 것임.
# 1.23.3 버전으로 업그레이드 예시.
# OS는 CentOS
# 1. Upgrade할 master에 접속 : ssh <master>
# 2. 업그레이드 할 버전 확인
$ sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes | tail -5
# 3. kubeadm 업그레이드
# --> Master 컴포넌트(etcd, api, controller 등 컨테이너로 동작중인 pods)들을 업그레이드 해주는 작업
$ sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
# kubeadmin 버전 확인
$ kubeadm version
# 업그레이드 계획 확인
$ sudo kubeadm upgrade plan v1.23.3
# 업그레이드 실행
$ sudo kubeadm upgrade apply v1.23.3
# 4. 노드 드레인 : console이나 master에서 실행
# etcd, api, controller 등 컨테이너로 동작중인 pods들을 전부 삭제하여 비워주는 작업
$ kubectl drain {MasterNode name} --ignore-daemonsets
# 5. kubelet과 kubectl 업그레이드
$ sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
# 6. 노드 uncordon (노드 드레인 작업에서 스케줄링 금지 기능을 풀어주는 것)
$ kubectl uncordon {MasterNode name}
# 7. 업그레이드 여부 확인
$ kubectl get nodes
Worker node upgrade
마찬가지로 kubeadm, kubelet, kubectl을 업그레이드 해야한다.
# 1.23.3 버전으로 업그레이드 예시.
# OS는 CentOS
# 1. Upgrade할 worker node 접속 :
$ ssh {worker node name}
# 2. kubeadm 업그레이드
$ sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
# 3. 업그레이드 실행 ----------> *Control plane Upgrade와 유일하게 다른 부분!!
$ sudo kubeadm upgrade node
# 3. 노드 드레인
# console에서 진행해야 함
$ exit
# 노드 드레인
$ kubectl drain {WorkerNode name} --ignore-daemonsets
# 확인
$ kubectl get nodes
# 다시 worker node 접속
$ ssh {worker node name}
# 4. kubelet과 kubectl 업그레이드
$ sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
$ sudo systemctl daemon-reload
$ sudo systemctl restart kubelet
# 5. 노드 uncordon (노드 드레인 작업에서 스케줄링 금지 기능을 풀어주는 것)
$ kubectl uncordon {WorkerNode name}
# 6. 업그레이드 여부 확인
$ kubectl get nodes
기출문제
[문제2]
작업 클러스터 : k8s
마스터 노드의 모든 Kubernetes control plane및 node 구성 요소를 버전 1.23.3으로 업그레이드합니다. master 노드를 업그레이드하기 전에 drain 하고 업그레이드 후에 uncordon해야 합니다.
'Infra > Kubernetes' 카테고리의 다른 글
[K8S/CKA 자격증] API 인증 / rbac 인증 (문제O) (0) | 2023.01.13 |
---|---|
[K8S] The connection to the server localhost:8080 was refused - did you specify the right host or port? 해결방법 (0) | 2023.01.13 |
[K8S/CKA 자격증] ETCD Backup & Restore (문제O) (0) | 2023.01.12 |
[K8S/CKA 자격증] kubectl 명령어 기초 (0) | 2023.01.12 |
[K8S/CKA 자격증] Kubernetes 기본 구성 요소 (0) | 2023.01.11 |