Cloud/k8s-CKA

[CKA] 46. k8s 문제 풀이(업데이트, 출력형식, PV)

jinkwon.kim 2023. 11. 15. 19:21
728x90
반응형

개요

k8s 업데이트하는 방법 및 출력 방식 변경을 알아보겠습니다.

핵심

1. kubeadm으로 cluster update

2. kubelet update

3. update할 node는 drain을 통하여 pod를 안전한 곳에 이동

controlplane 업데이트

Pod를 모두 다른 node로 이동

kubectl drain controlplane --ignore-daemonsets 

daemonsets는 자동으로 drain 되지 않음으로 --ignore-daemonsets 을 주어서 강제로 내려야 합니다. 

package 업데이트 

apt update

업데이트 가능 package 확인

apt-cache madison kubeadm

kubeadm update

kubeadm 자동 업데이트 풀기

apt-mark unhold kubeadm

kubeadm 업데이트

apt-get update && apt-get install -y kubeadm='1.28.x-*'

kubeadm 자동 업데이트 막기

apt-mark hold kubeadm

cluster upgrade가능성 검사

kubeadm upgrade plan

아래와 같은 upgrade가능 정보가 나옵니다.

cluster upgrade 수행

kubeadm upgrade apply

수행되는 작업

  1. 업그레이드 실행: 사용자가 지정한 버전으로 쿠버네티스 클러스터의 컨트롤 플레인 노드들을 업그레이드합니다. 이는 쿠버네티스의 코어 컴포넌트들을 포함합니다 (예: kube-apiserver, kube-controller-manager, kube-scheduler, etcd 등).
  2. 구성 변경 적용: 클러스터의 구성 파일을 새 버전에 맞게 업데이트하고 필요한 변경사항을 적용합니다.
  3. 의존성 관리: 쿠버네티스의 다양한 컴포넌트들 간의 의존성을 고려하여 업그레이드가 진행됩니다. 예를 들어, API 서버가 먼저 업그레이드된 후 다른 컴포넌트들이 업그레이드됩니다.
  4. 버전 호환성 확인: 업그레이드 과정에서 클러스터의 현재 버전과 목표 버전 간의 호환성을 확인합니다. 이는 업그레이드 과정에서 발생할 수 있는 문제를 최소화하는 데 도움이 됩니다.
  5. 롤백 준비: 업그레이드 과정에서 문제가 발생할 경우를 대비하여 롤백을 준비합니다. 이는 업그레이드가 실패하거나 예기치 않은 문제가 발생했을 때 이전 버전으로 쉽게 되돌릴 수 있도록 합니다.
  6. 보안 및 기능 업데이트: 새 버전의 쿠버네티스는 종종 보안 패치와 새로운 기능을 포함하고 있어, 이를 통해 클러스터의 보안과 성능을 향상시킬 수 있습니다.

kubelet update

kubelet 자동 업데이트 풀기

apt-mark unhold kubelet

kubelet 업데이트

apt-get install kubelet=1.27.0-00

참고

apt-cache policy kubelet 해당 명령으로 설치 가능한 버전 확인 가능 

단 apt-get update 먼저 해야 최신정볼르 받아 옵니다.

kubelet 자동 업데이트 막기

apt-mark unhold kubelet

cluster 구성 파일 변경 사항 적용

systemctl daemon-reload

쿠버네티스 업그레이드 과정에서 kubelet이나 다른 시스템 서비스의 구성 파일이 변경될 수 있습니다. systemctl daemon-reload 명령은 systemd 데몬에게 이러한 변경 사항을 재로드하라고 지시합니다. 즉, 변경된 구성 파일을 읽어들여 적용하는 과정입니다.

kubelet 재시작

systemctl restart kubelet

controlplane drain 풀기

kubectl uncordon controlplane

worker node 업데이트

controlplane 업데이트와 비교하여 아래 2개의 단계만 빠집니다.

kubeadm upgrade plan

kubeadm upgrade apply

controlplane taint 제거

kubectl taint node controlplane node-role.kubernetes.io/control-plane:NoSchedule-

taint를 제거해야 worker node가 drain되었을시 pod가 controlplane으로 넘어 갈수 있습니다.

worker node drain

kubectrl drain worker1 --ignore-daemonsets

daemonsets는 자동으로 drain 되지 않음으로 --ignore-daemonsets 을 주어서 강제로 내려야 합니다. 

package 업데이트 

apt update

업데이트 가능 package 확인

apt-cache madison kubeadm

kubeadm update

kubeadm 업데이트 풀기

apt-mark unhold kubeadm

kubeadm 업데이트

apt-get update && apt-get install -y kubeadm='1.28.x-*'

kubeadm 업데이트 막기

apt-mark hold kubeadm

kubelet update

kubelet 자동 업데이트 풀기

apt-mark unhold kubelet

kubelet 업데이트

apt-get install kubelet=1.27.0-00

kubelet 자동 업데이트 막기

apt-mark unhold kubelet

cluster 구성 파일 변경 사항 적용

systemctl daemon-reload

쿠버네티스 업그레이드 과정에서 kubelet이나 다른 시스템 서비스의 구성 파일이 변경될 수 있습니다. systemctl daemon-reload 명령은 systemd 데몬에게 이러한 변경 사항을 재로드하라고 지시합니다. 즉, 변경된 구성 파일을 읽어들여 적용하는 과정입니다.

kubelet 재시작

systemctl restart kubelet

worker node drain 풀기

kubectl uncordon woker1

controlplane taint 복구

kubectl taint node controlplane node-role.kubernetes.io/control-plane:NoSchedule

출력 방식 설정

custom-columns를 사용한다.

custom-columns의 값은 -o json의 결과 값을 기반으로 만들어집니다. 

object의 접근은 . 으로 array의 접근은 []. 으로 접근 합니다.

 

kubectl get pod  -o custom-columns=DEP:.metadata.name,STATE:.status.containerStatuses[].image \

--sort-by=.status.containerStatuses[].image

 

Rolling update 방법

k8s에서 기본적으로 사용하는 deployment update 방식 입니다.

그래서 image 변환시 아래와 같은 명령어를 사용하면됩니다. 

 

kubectl set image {deployment 이름} {container 이름}={image 이름}

https://doitnow-man.tistory.com/entry/CKA-16-k8s-Rolling-update-and-Rollback

 

[CKA] 16. k8s Rolling update and Rollback

개요 k8s Rolling update와 Rollback 방식을 알아보겠습니다. 업데이트 방식 1. Recreate update 2. Rolling update Recreate Update 기존에 배포한 pod를 모두 내리고 새로운 pod를 배포하는 방식입니다. 그러나 이방식

doitnow-man.tistory.com

 

기본 namespace 전환

kubectl config set-context $(kubectl config current-context) --namespace=dev

PV와 PVC 연결

https://doitnow-man.tistory.com/entry/CKA-33-volume-%EA%B3%BC-PV-%EA%B7%B8%EB%A6%AC%EA%B3%A0-PVC

 

[CKA] 34. volume 과 PV 그리고 PVC

개요 k8s에서 volume을 어떻게 관리하는지 알아보겠습니다. 본 글에서 k8s에서 volume의 사용법, 그리고 Persistent Volumes과 Persistent Volume Claims 대하여 알아보겠습니다. 목차 volume 개념 volume 사용법 Persist

doitnow-man.tistory.com

ETCD 백업

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file>   snapshot save <backup-file-location>

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> \
  snapshot save <backup-file-location>
  •  

 --endpoints 값

--cacert 값

--cert

--key

 

728x90
반응형

'Cloud > k8s-CKA' 카테고리의 다른 글

[CKA] 48. killer.sh  (0) 2023.11.18
[CKA] 47. k8s 문제 풀이 모르는 것 정리  (0) 2023.11.17
[CKA] 45. Troubleshooting  (0) 2023.11.07
[CKA] 44. network policy  (0) 2023.11.05
[CKA] 43. k8s 각종 보안 (image, securityContext)  (0) 2023.11.05