본문 바로가기

CI-CD/Kubernetes

Kubernetes- 동작원리

컨트롤 플레인은 API Server를 통해 사용자로 부터 kubectl 명령어를 받아서 명령어 검증을 진행한다. 정상적인 명령어인 경우 해당 명령을 실행하도록 한다. 

워커 노드에는 Kubelet 데몬이 존재하며 Kubelet은 컨테이너를 트래킹하여 관리하는 역할을 한다. 만일 kubectl create deployment --image=nginx라는 명령어가 들어온다면, kubelet은 자신의 노드에서 pod를 실행하라는 요청이 들어올 시 해당 요청을 본인의 노드에 있는 컨테이너 엔진(Docker, containerd, runc...) 명령어로 치환하여 컨테이너를 생성한다.

 

Control Plane 구성요소

API

사용자로부터 kubectl 명령을 받아서 문법을 체크하고 컨트롤 플레인 내부의 다양한 컴포넌트들과 상호작용하여 명령을 처리한다. 워커노드에서 새로운 Pod를 생성해야하는 경우에는 스케줄러에게 명령을 내려 Pod를 생성할 워커노드를 선별하고 결정된 노드의 Kubelet에게 명령을 내려 생성하도록 한다.

 

etcd

워커 노드들의 상태 정보가 (키: 값) 쌍 형태로 저장되어 있는 저장소다. 또한 쿠버네티스의 상태 정보 또한 보유한다.

 

Scheduler

어떤 노드에서 Pod를 생성하는 것이 가장 합당한지 결정함. 즉, Pod를 실행할 노드를 선택하여 Api에게 알려줌.

 

Contoller

Pod가 정상적으로 관리되고 있는지 지속적으로 감시하여, 그 개수를 보장함. 예를 들어 Pod가 세개 실행되어야 하는데 Pod가 실행중이던 노드 하나가 갑자기 꺼져 실행중인 Pod가 두개로 줄었다면 Api에게 이를 알려주어 다시 Pod가 생성되도록 함.

 

Worker Node 구성요소

Kubelet

Control Plane으로부터 요청을 받아 컨테이너 엔진의 명령어로 치환 후 컨테이너 엔진에 명령을 전달. 내부의 cAdiviser를 통해서 컨테이너를 지속적으로 감시함.

 

Container Runtime

컨테이너 엔진(docker, containerd, runc). Kubelet으로 부터 전해져온 명령어를 통해서 컨테이너를 관리.

 

Kube-Proxy

네트워크 동작을 관리함.

'CI-CD > Kubernetes' 카테고리의 다른 글

Kubernetes- Service  (0) 2024.06.07
Kubernetes- Controller  (0) 2024.06.03
Kubernetes- Multi Container Pod 생성  (0) 2024.06.03
Kubernetes- Context  (0) 2024.06.01
Kubernetes- 기본 개념 정리  (0) 2024.05.27