출처 - 쿠버네티스 마스터-컴포넌트
클러스터
쿠버네티스를 배포하면 클러스터를 얻는데, 이런 클러스터는 여러 머신의 묶음이고, 머신은 여러 컴포넌트를 포함합니다.
그런 컴포넌트는 용도에 따라 3가지 정도로 분류 됩니다. Master, Node 그리고 선택적인 Addon 이 있습니다.
Master용 컴포넌트
마스터 노드는 워커 노드와 클러스터 내 파드를 관리 합니다. 또 다수의 마스터 노드는 장애극복(failover)와 고가용성의 클러스터에서 사용합니다.
마스터 노드가 속한 클러스터를 관리 하기 위해 구성된 마스터용 컴포넌트는 다음과 같습니다.
etcd
key-value 저장소이며, 백업을 권하고 있습니다.
etcd는 서버 하나당 프로세스 1개만 사용할 수 있습니다. 때문에, etcd 자체를 클러스터링한 후 각 마스터에 설치해 사용을 합니다.
kube-apiserver
컨트롤 플레인의 프론트 엔드이다. 클러스터로 온 요청이 유효한지 검증 및 권한확인 등을 하고 요청에 따른 행위를 한다. kube-apiserver는 수평으로 확장가능 하도록 하기 위해 MSA로 디자인 되어 인스턴스간의 트래픽을 균형 있게 조절할수 있다.
kube-scheduler
새롭게 생성된 파드를 감지하여, 파드를 실행할 노드를 배정하고 파드를 구동합니다. 노드를 배정할때 여러 조건을 확인 하는데, 고려되는 요소는 리소스에 대한 개별 및 총제적 요구 사항, 하드웨어/소프트웨어/정책적 제약, 어피니티(affinity) 및 안티-어피니티(anti-affinity)명세, 데이터 지역성, 워크로드-간 간섭, 데드라인을 포함합니다.
kube-controller-manager
노드를 관리하는 컨트롤러이다.
논리적으로는 각 컨트롤러는 별개의 프로세스이지만, 복잡성을 낮추기 위해 모두 단일 바이너리로 컴파일되고 단일 프로세스내에서 실행됩니다.
각 컨트롤러는 노드컨트롤러, 레플리케이션 컨트롤러, 엔드포인트 컨트롤러, 서비스 어카운트 & 토큰 컨트롤러로 구성됩니다.
클라우드 서비스와 연결해 관리하는 컴포넌트입니다.
네가지의 컨트롤러를 제공 합니다. 노드 컨트롤러, 라우트 컨트롤러, 서비스 컨트롤러, 볼륨 컨트롤러 입니다.