쿠버네티스를 공부한 내용을 작성한다.
> kubectl get pods -n kube-system
위 명령어를 통해 현재 쿠버네티스를 구성하고 있는 구성 요소들을 확인
calico
, coredns
, kube-apiserver
, kube-controller
, kube-proxy
, kube-scheduler
등이 존재
AWS
에서 제공하는 EKS
, Azure
에서 제공하는 AKS
, Google
에서 제공하는 GKE
도 마찬가지로 kube-system
밑에 주요 구성요소가
MSA, Microservices Architecture
)pods
생성 명령어 작성API 서버
및 etcd
로 pods
생성 요청API 서버
가 컨트롤러 매니저로 생성 요청 전달 후, 실제로 만들었는지 감시pods
생성API 서버
가 스케줄러에게 새로 생성된 pods
워커 노드 포함 요청pods
를 워커 노드에 포함되도록 스케쥴링 진행API 서버
가 워커 노드에 있는 kubelet
에 pods
가 있는지 감시kubelet
은 컨테이너 런타임에 pods
의 동작 관리 요청kubelet
은 pods
운영 상태 정보를 API 서버
에게 전달kube-proxy
를 통해 pods
를 조작 및 통신API 서버
가 쿠버네티스 중앙에서 상태 값을 가지고 있고, 그 상태를 컨트롤 매니저, 스케쥴러, kubelet
등이 상태 값을 변경하려는 방식으로 동작
사용자가 명령어로 전달한 내용을 API 서버
가 공지하고 있으면, 다른 구성요소들이 이를 참고하여 사용자의 요구사항을 만족할 수 있도록 함
(선언적인 시스템)
감시 -> 차이발견 -> 상태변경 -> 반복
etcd
에 기록 (구성 정보를 백업)etcd
는 기록이 완료되었음을 API 서버
에게 매번 알림etcd
내용을 확인하는 것이 정답API 서버
는 쿠버네티스 클러스터를 구성하는 모든 요소의 게이트웨이파드를 실수로 지운 경우
파드만 배포된 경우: 파드가 사라짐, 복구 불가
deployment
형태로 배포된 경우: 파드가 지워지더라도 새로 생성
단일 pod
와 deployment
를 생성한 후, 1개씩 지워봄단일 pod
는 지워지고 아무런 후속조치가 없지만, deployment
에 포함된 pod
는 삭제하자마자 새로운 pod
를 생성 (2tkxn 삭제, rqjb1 생성)deployment
를 삭제하고 싶으면 kubectl delete deployment 이름
의 형태로 작성kubelet
에 문제가 발생하면 자동 복구가 어려움워커 노드 w1-k8s
에서 kubelet
을 중단하고 deployment
배포를 진행하면 어떻게 될까?
pod
의 상태가 Pending
으로 나타남, 생성 안됨
즉, kubelet
에 문제가 생기면 배포 과정에 문제 발생
워커 노드에서 kubelet
서비스를 시작하고, 마스터 노드에서 -w
옵션을 부여해 pods
의 변경 상태를 확인해보면, 서비스를 시작하자마자 자동으로 pod
를 생성함
워커 노드에서 컨테이너 런타임인 containerd
서비스를 중단하고 replicas
를 6으로 올려 더 많은 pod
를 생성해보려 함
containerd
서비스를 중단한 w1
쪽으로는 새로운 pod
가 생성되지 않고, w2
,w3
쪽으로 새로운 pod
가 생김
기존 w1
이 가지고 있는 pod
는 일정 시간이 지나도 containerd
가 살아나지 않을 경우 다른 워커 노드로 옮겨지게 됨
마스터 노드에 있는 스케줄러를 삭제하기 위해 kube-system
하위 항목을 나열하고 kubectl delete pod kube-scheduler-m-k8s -n kube-system
명령을 이용해 삭제 (-n 옵션은 namespace를 알려주기 위함)
쿠버네티스의 스케쥴러는 pod
로써 관리되고 있지만, 없어서는 안될 주요 구성요소 이기 때문에, 삭제하자마자 새롭게 생성해버림
kubelet
서비스를 중지하고 다른 내용을 삭제하면, TERMINATING
상태로 표시되지만, 실제로는 수행되지 않기에 정상적으로 작동containerd
는 docker
보다 훨씬 안정적으로 컨테이너 런타임을 운영함
containerd
서비스를 중단해도, 스케쥴러, API 서버, kubelet
등은 모두 살아있기 때문에 배포, 삭제 등이 가능