티스토리 뷰
# kubernetes packages
-kubeadm: 쿠버네티스 클러스터를 쉽게 부트스트랩하는 데 사용되는 도구입니다. kubeadm을 사용하면 안전한 쿠버네티스 클러스터를 생성하고, 클러스터를 업그레이드하고, 클러스터에서 노드를 제거하는 등의 작업을 수행할 수 있습니다.
- kubelet: 쿠버네티스 시스템의 중요한 구성 요소로서, 각 노드에서 실행되는 에이전트입니다. kubelet의 주요 역할은 PodSpecs(컨테이너 그룹에 대한 쿠버네티스 설명)를 읽고, 해당 사양에 따라 컨테이너를 실행하고, 컨테이너의 상태를 보고하는 것입니다.
- kubectl: 쿠버네티스 클러스터와 상호 작용하는 데 사용되는 주요 커맨드라인 도구입니다. 이를 통해 애플리케이션을 배포하고, 클러스터 리소스를 검사하고, 로그를 확인하고, 쿠버네티스 클러스터를 관리하는 등의 작업을 수행할 수 있습니다.
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
업그레이드할 버전 결정부터 시작
문제 1: kubernetes cluster update : kubeadm, kubelet, kubectl 을 1.22.4에서 1.23.3 버전으로 업데이트
1. 현재 버전 확인 및 업데이트할 버전 결정
# 현재 버전 확인
kubectl get nodes
# 결과 확인
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 20d v1.22.4
k8s-worker1 Ready <none> 20d v1.22.4
k8s-worker1 Ready <none> 20d v1.22.4
# 서버 접속
ssh h8s-master
# 배포된 운영체제 확인
sudo cat /etc/os-release
# 결과 확인
centos
# 운영 체제에 맞춰 설치 가능한 버전 리스트 확인- centos
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# 결과 확인
kubeadm.x86_64 1.23.3-0
2. 컨트롤 플레인 노드 업데이트
# 운영 체제에 맞추고 버전을 수정 후 실행
sudo yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
# 다운로드한 버전 확인
sudo kubeadm version
# 업데이트 계획을 확인
sudo kubeadm upgrade plan
# kubeadm upgrade apply v1.23.0 확인
# 업데이트할 버전을 선택 후 실행
sudo kubeadm upgrade apply v1.23.0
3. 노드 드레인
# kubectl drain <node-to-drain> --ignore-daemonsets
kubectl drain k8s-master --ignore-daemonsets
4. kubelet, kubectl 업데이트
# 운영체제에 맞춰 업데이트 - centos
yum install -y kubelet-1.27.x-0 kubectl-1.27.x-0 --disableexcludes=kubernetes
# kubelet 다시 시작
sudo systemctl daemon-reload
sudo systemctl restart kubelet
# 스케줄 가능으로 표시하여 노드를 다시 온라인 상태 수정
# kubectl uncordon <node-to-uncordon>
kubectl uncordon k8s-master
# 버전 확인
kubectl get nodes
# 결과 확인
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 20d v1.23.3
k8s-worker1 Ready <none> 20d v1.22.4
k8s-worker1 Ready <none> 20d v1.22.4
문제 2: worker node update : kubeadm, kubelet, kubectl 을 1.22.4에서 1.23.3 버전으로 업데이트
1. kubeadm 업데이트
# 워커 서버 접속
ssh h8s-w1
# kubeadm 업데이트 - centos
yum install -y kubeadm-1.23.3-0 --disableexcludes=kubernetes
# kubeadm 업데이트 호출
sudo kubeadm upgrade node
2. 노드 드레인
# 서버에서 나가기
exit
# kubectl drain <node-to-drain> --ignore-daemonsets
kubectl drain h8s-w1 --ignore-daemonsets
# 서버에 다시 접속
ssh h8s-w1
3. kubelet, kubectl 업데이트
# 운영 체제에 맞게 업데이트 - centos
sudo yum install -y kubelet-1.23.3-0 kubectl-1.23.3-0 --disableexcludes=kubernetes
# kubelet을 다시 시작
sudo systemctl daemon-reload
sudo systemctl restart kubelet
4. 노드 차단 해제
# 서버 나가기
exit
# 스케쥴 가능으로 표시
# kubectl uncordon <node-to-uncordon>
kubectl uncordon h8s-w1
# 버전 확인
kubectl get nodes
# 결과 확인
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 20d v1.23.3
k8s-worker1 Ready <none> 20d v1.23.3
k8s-worker1 Ready <none> 20d v1.22.4
'cka' 카테고리의 다른 글
kubernetes [CKA] - role/role binding 설정 (0) | 2023.06.08 |
---|---|
kubernetes [CKA] - rbac 인증 (0) | 2023.06.07 |
kubernetes [CKA] - ETCD Backup & Restore (0) | 2023.06.05 |
kubernetes [CKA] - 멀티 클러스터 정보 (0) | 2023.06.05 |
kubernetes [CKA] - 클러스터 정보 확인 (0) | 2023.06.02 |