https://kubernetes.io/ko/docs/concepts/overview/components/
- 정의
- Cluster에 관한 전반적인 결정(스케줄링 등)을 수행
- 클러스터 이벤트를 감지하고 반응
- ex) deployment의 replicas 필드에 대한 요구 조건이 충족되지 않으면 새로운 pod를 구동시킴
- 특징
- 클러스터 내 어떤 머신에서든 동작 가능
- 그러나 보통 동일 머신상에서 모든 Control Plane 컴포넌트를 구동
- 그리고 해당 머신에서는 사용자 컨테이너를 동작시키지 않음
kube-apiserver
- 쿠버네티스 API를 노출하는 컴포넌트
- 쿠버네티스 Control Plane의 프론트엔드 - 수평 확장이 가능한 디자인
- 더 많이 배포하여 확장 가능
etcd
- 모든 Cluster 데이터를 담는 저장소
- 일관성
- 고가용성
- kev-value - 이를 사용할 경우 back-up 계획은 필수
kube-scheduler
- Node가 배정되지 않은 새로 생성된 Pod를 감지하여 실행할 노드를 선택함
- 스케줄링 결정 요소
- 리소스에 대한 요구사항
- 하드웨어/소프트웨어/정책 제약
- affinity / anti-affinity 명세
- 데이터 지역성
- 워크로드간 간섭
- 데드라인
kube-controller-manager
- Controller 프로세스를 실행
- Controller
- Controller : API 서버를 통해 Cluster의 공유된 상태를 감시
- 현재 상태를 원하는 상태로 이행시키는 control-loop - 논리적으로 각 Controller는 분리된 프로세스
- 그러나 단일 바이너리로 컴파일되고 단일 프로세스 내에서 실행 - Controller가 포함하는 것
- Node controller
- 노드가 다운되었을 때 통지/대응에 관한 책임 - Replication Controller
- 시스템의 모든 replication controller 오브젝트에 대해 알맞은 수의 pod를 유지시키는 책임 - Endpoint Controller
- Endpoint 오브젝트를 채움
- 서비스와 pod를 연결시킨다는 뜻 - Service Sccount & Token Controller
- 새로운 namespace에 대한 (기본 계정/API 접근 토큰)을 생성
- Node controller
cloud-controller-manager
- 클라우드별 control 로직을 포함
- 기능
- Cluster를 클라우드 공급사의 API에 연결
- 다음 2가지 컴포넌트를 구분
1) 해당 클라우드 플랫폼과 상호작용하는 컴포넌트
2) Cluster와만 상호작용하는 컴포넌트
- 클라우드 제공자 전용 controller만 실행
- 사내 또는 PC 내부 학습 환경에서의 실행은 Cluster에 이 controller가 없음 - kube-controller-manager와 마찬가지
- 논리적으로 독립적인 단일 프로세스
- 수평으로 확장하여 성능 향상 및 장애 대응 가능
https://kb.novaordis.com/index.php/Kubernetes_Control_Plane_and_Data_Plane_Concepts
'데이터 엔지니어링 > K8s' 카테고리의 다른 글
[K8s] Helm (0) | 2022.05.16 |
---|---|
[K8s] Cluster 초기세팅 에러 (coredns PENDING) (0) | 2022.05.13 |
[K8s] 쿠버네티스 애드온 (0) | 2022.05.13 |
[K8s] 쿠버네티스 노드(Node) 컴포넌트 (0) | 2022.05.13 |
[K8s] Kubernetes (K8s) (0) | 2022.05.13 |