Control plane 컴포넌트는 일반적으로 하나의 노드에서 동작하지만, 고가용성 환경이나 대규모 클러스터에서는 여러 노드에 분산된 형태도 가능하다.
Api server : 쿠버네티스 REST API를 공개한다. 모든 데이터를 etcd 클러스터에 저장하므로 쉽게 수평 확장이 가능하다. API 서버는 쿠버네티스 control-plane을 구체화한 것이다.
etcd : 분산데이터 저장소, 쿠버네티스는 이것을 사용해 전체 클러스터의 상태를 저장한다. 규모가 작고 일시적인 클러스터의 경우에는 etcd 단일 인스턴스가 다른 마스터 컴포넌트와 함께 동일한 노드에서 동작할 수 있다. 하지만 대규모 클러스터의 경우 일반적으로 이중화와 고가용성을 위해 3개에서 많으면 5개 노드의 etcd 클러스터를 갖기도 한다.
controller manager : 컨트롤러 매니저는 API를 사용해 클러스터의 상태를 감시하고, 클러스터를 원하는 상태로 조정한다. 컨트롤러 매니저에는 replication controller, pod controller, service controller, endpoint controller 등이 포함된다.
scheduler : Kube scheduler는 node에 pod를 스케줄링하는 역할을 담당한다. 서비스의 리소스 요구사항, 서비스 요구사항, hardware와 software 정책 제약 사항등 여러 상호작용을 요인으로 고려해야하므로 사실상 매우 복잡한 작업이다.
Dashboard
CNI(Container Network Interface Plugin)
Ingress
coreDNS
클러스터의 worker node가 클러스터 master components와 상호작용하고, 클러스터를 실행하고 업데이트하기 위한 워크로드를 받기 위해서는 몇 가지 관련 components가 필요하다.
kube-proxy
kubelet
쿠버네티스는 master node에 내부적으로 API-SERVER를 가지고 있어 master node를 통해 worker node로 통신이 전달된다.
대량의 통신이 발생하게 되면 master node는 부하를 많이 받아 장애 발생 가능성이 커지게 되는데 master node 를 HA 클러스터로 운영하게 되면 통신량을 분산시킬 수 있고, 일부 master node에 장애가 발생되더라도 worker node의 운영환경에는 영향을 없을 수 있다.