오답노트

[k8s] 쿠버네티스 컴포넌트 본문

Infra/Kubernetes

[k8s] 쿠버네티스 컴포넌트

권멋져 2022. 11. 6. 23:01

클러스터

쿠버네티스는 클러스터라는 형태로 배포한다. 클러스터 노드는 마스터 노드와 노드(워커 노드)로 이루어져있다.

 

마스터 노드 (Control Plane)

마스터노드는 클러스터에 대한 전반적인 결정을 수행하고 클러스터 이벤트를 감지하고 반응한다.

 

API 서버 

API 서버에 명령어를 보내면 명령어 대한 수행하도록 다른 컴포넌트에게 전달한다. 수평으로 확장되도록 디자인되었다. 즉, 더 많은 인스턴스를 배포해서 확장할 수 있다. 여러 인스턴스를 실행하고, 인스턴스간의 트래픽을 균형있게 조절할 수 있다.

 

scheduler

노드가 배정되지 않은 새로 생성된 Pod를 감지하고, 실행할 노드를 선택한다. 

 

Controller Manager

클러스터의 상태를 조절하는 컨트롤러들을 생성, 배포한다. 이는 고가용성을 유지하기 위함이다.

 

etcd

모든 클러스터의 구성 데이터를 저장하는 저장소이다. 

 

워커 노드 (Node)

동작 중인 Pod를 유지시키고 쿠버네티스 런타임 환경을 제공하며, 모든 노드 상에서 동작한다.

 

Container Runtime

컨테이너를 실행하고 노드에서 컨테이너 이미지를 관리한다.

 

kubelet

각 노드의 에이전트이다. 컨테이너 런타임에게 Task를 할당하여 전달한다. Kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않는다.

 

kube-proxy

노드의 네트워크 규칙을 유지 관리한다. 이 네트워크 규칙이 내부 네트워크 세션이나 클러스터 바깥에서 파드로 네트워크 통신을 할 수 있도록 해준다.

 

 

Pod

Pod는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 하나 이상의 컨테이너의 그룹이다. 이 그룹은 스토리지 및 네트워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 Templat를 통해 갖는다.

 

Templat은 Deployment, ReplicaSet과 같은 Controller의 yaml 내용에 포함한다.