푸잉이의 기술블로그
[Day10] Certified Kubernetes Administrator (CKA) with Practice Tests 본문
[Day10] Certified Kubernetes Administrator (CKA) with Practice Tests
data고수 2023. 1. 17. 00:04116강. Self Healing Applications
쿠버네티스는 ReplicaSet과 Replication controller를 통해 self-healing application을 제공한다.
Replication controller는 pod내에서 충돌이 일어났을 때, pod가 자동으로 재생성 되도록 보장해주는 것을 돕는다.
항상 충분한 replica의 애플리케이션이 실행되도록 도움 줌
Section 6. Cluster Maintenance
120.OperatingSystem (OS) upgrades
유지의 목적을 위해 cluster의 일부, node를 분해해야할 수 있다.software 기반 업그레이드 또는 패치를 적용을 위해
몇개의 노드에 하나의 클러스터를 가지고 있다. 그리고 pod는 애플리케이션을 제공하고 있다. 이러한 노드 중 하나가 중단된다면? 물론 노드 안의 pods들은 접근할 수 없다.
어떻게 이러한 pod들을 배치하느냐에 따라서, 너의 user들은 영향을 받을 것이다.
예를 들어 blue pod의 multiple replicas를 가지고 있기 때문에 blue application에 접근 하는 사용자들이 온라인 상태의 다른 blue pod을 통해 서비스를 받을 때 영향을 받지 않는다.
Node가 내려갔을 때, 즉시 다시 올라오면 pod도 다시 올라옴.
그러나, 5분 이상 down 이되면, node로부터 pod은 종료된다. (master node가 고려함)
-> 쿠버네티스가 죽었다고 판단하고, Replicaset에 의해 다른 node에 pod생성
- 5분 내에 돌아오지 않는다면, 의도적으로 모든 worker node의 pods를 빼내어 다른 클러스터 안의 pods를 옮기는 명령
-> kubectl drain node-1
- node를 스케줄링하지 않은 것
-> kubectl cordon node-1
- drain, cordon 해제 (node에 pod가 정상적으로 스케쥴링 될 수 있도록 복구하는 명령어)
-> kubectl uncordon node-1
'
<pod eviction time 쿠버네티스 노드가 죽고 나서 그 이후>
Ready 컨디션의 상태가 pod-eviction-timeout(kube-controller-manager에 전달된 인수) 보다 더 길게 unknown 또는 False로 유지되는 경우
-> 노드 상에 모든 pod는 노드 컨트롤러에 의해 삭제되도록 스케줄이 설정됨.
우선 node가 죽은 경우(Not ready 상태) pod는 계속 실행되지만, pod를 종료상태로 설정하기 전, pod eviction timeout에 설정된 시간만큼 기다린다. (Default 5분)
-> 그 후 flow대로 흘러 pod가 새로운 노드에 재 배포됨
-> pod는 예약되지 않은 상태로 표시
123강 Kubernetes software version
쿠버네티스 project가 소프트웨어 release를 어떻게 관리하는지
kubectl get nodes를 하면 version을 알 수 있음
Minor version: few months마다 바뀜 with new features& functionalities
Patch: 중요한 bug 수정

125강 Cluster upgrade process
KubeAPIserver: (X)
- Control plane 중 가장 중요한 component
- version 중 가장 높음
Controller manager & Scheduler는 version 1개 낮음 (X-1)
Kubeleet & kube-proxy (X-2)

<Upgrade 방법>
1. GCP 같은 클라우드 서비스를 사용하는 경우 버튼
2. Kubeadm
<업그레이드 전략>
1. master node upgrade 하기
-apiserver, scheduler, controller manager가 잠시 다운됨 -> 모든 management 가 중지 -> node는 괜츈
2. worker node upgrade 하기
1) 한 번에 업그레이드 (다운타임 생김)
2) node 하나씩 업그레이드
3) 새로운 버전 node가 생성, 다른 node에 pod들 옮겨 놓고 업그레이드, old node 삭제됨
<Upgrade 순서>
1. 버전 조회:
kubeadm upgrade plan v1.11.3

2. apt-get upgrade -y kubeadm=1.12.0-00
3. Cluster 업그레이드 적용
:kubeadm upgrade apply v1.12.4
//다음 명령어 확인 시 성공 [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.19.x". Enjoy! [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
- kubelet을 설치하거나 uprgrade하지 않음
4. kubelet 업그레이드
: apt-get upgrade -y kubelet=1.12.0-00
5. kubelet 재시작
: systemctl restart kubelet
6. node 확인
:kubectl get nodes


<worker nodes 업그레이드>

https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
여기서 순서대로 upgrade 하기
참조