쿠버네티스를 이루는 컴포넌트는 크게 두 가지로 나뉜다.
"Control Plane"과 "노드(Node) 컴포넌트"이다.
Control Plane
Kubernetes의 기능 제어를 전체적으로 담당
1. Kube-apiserver
= " Kubernetes Control Plane의 안내데스크 "
- Kubernetes Cluster로 들어오는 요청을 가장 앞에서 접수
- 들어온 요청의 처리 흐름에 따라 적절한 컴포넌트로 요청 전달
2. etcd
= " 안정적인 동작을 위해 자료를 분산해서 key-value 형태로 저장한 저장소 "
- Kubernetes Cluster가 동작하기 위해서 클러스터 및 리소스의 구성 정보, 상태 정보, 명세 정보 등이 저장
3. kube-controller-manager
= " 유지,관리하는 책임감 있는 관리자 "
- 다운된 노드가 없는지
- Pod가 의도된 복제 (Replicas) 숫자를 유지하는지
- Service와 Pod는 적절하게 연결되었는지
- 네임스페이스에 대한 기본 계정과 토큰이 생성되어 있는지 확인
4. Kube-scheduler
= " 새로 생성된 Pod를 감지하여 어떤 노드로 배치할지 결정하는 작업을 담당하는 컴포넌트 "
- 기본적인 작업 단위 = pod
- Pod는 여러 노드 중 특정 노드에 배치되어 동작
Node Component
Control plane component의 요청을 받아 각 노드에서 동작을 담당
1. Kubelet
= " 노드에서 컨테이너가 동작하도록 관리해 주는 핵심 요소 "
- 각 노드에서 Pod를 생성하고 정상적으로 동작하는지 관리하는 역할
2. Container runtime
= " Pod에 포함된 컨테이너 실행을 실질적으로 담당하는 애플리케이션 "
- 컨테이너 런타임 인터페이스(CRI)를 준수하여 쿠버네티스와 함께 사용할 수 있는 외부 애플리케이션
3. Kube-proxy
= " Kubernetes Cluster 내부에서 네트워크 요청을 전달하는 역할 "
- Pod의 IP가 매번 변하지만 kube-proxy가 이 Pod에 접근할 수 있는 방법을 그때마다 관리하고 갱신
- 서비스 오브젝트는 이 정보를 활용해 Pod가 외부에서 접근할 수 있는 경로 제공
참고 자료: https://www.samsungsds.com/kr/insights/kubernetes-3.html