티스토리 뷰

cka

kubernetes [CKA] - kubernetes update

타올이 2023. 6. 6. 17:25
반응형

# kubernetes packages

-kubeadm: 쿠버네티스 클러스터를 쉽게 부트스트랩하는 데 사용되는 도구입니다. kubeadm을 사용하면 안전한 쿠버네티스 클러스터를 생성하고, 클러스터를 업그레이드하고, 클러스터에서 노드를 제거하는 등의 작업을 수행할 수 있습니다.

 

 - kubelet: 쿠버네티스 시스템의 중요한 구성 요소로서, 각 노드에서 실행되는 에이전트입니다. kubelet의 주요 역할은 PodSpecs(컨테이너 그룹에 대한 쿠버네티스 설명)를 읽고, 해당 사양에 따라 컨테이너를 실행하고, 컨테이너의 상태를 보고하는 것입니다.

 

 - kubectl: 쿠버네티스 클러스터와 상호 작용하는 데 사용되는 주요 커맨드라인 도구입니다. 이를 통해 애플리케이션을 배포하고, 클러스터 리소스를 검사하고, 로그를 확인하고, 쿠버네티스 클러스터를 관리하는 등의 작업을 수행할 수 있습니다.

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

업그레이드할 버전 결정부터 시작

 

Upgrading kubeadm clusters

This page explains how to upgrade a Kubernetes cluster created with kubeadm from version 1.26.x to version 1.27.x, and from version 1.27.x to 1.27.y (where y > x). Skipping MINOR versions when upgrading is unsupported. For more details, please visit Versio

kubernetes.io

문제 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
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
링크
글 보관함