전체 클러시터 관리를 담당하는 노드로 k8s 워커의 오케스트레이션을 처리함
특징으론 단일 실패 지점 회피를 위한 복제 기능을 가짐
API 서버
쿠베네티스 컨트롤 플레인의 프론트엔드로 쿠버네티스 클러스터를 정의하고 구성하기 위해 RESTFul 웹 서비스를 제공함
etcd
시스템에서 실행 중인 모든 오브젝트의 상태를 유지 관리하는 고가용성 보장을 위한 요소로 쿠버네티스 구성의 모든 변경 사항이 여기에 저장되며 변경사항을 즉시 조치할 수 있음 (일종의 서비스 레지스트리)
스케줄러
스케줄러는 각 파드의 리소스 요구 사항을 읽고 가용성에 따라 클러스터 전체에 파드를 배포함. 파드의 스냅샷을 다른 노드에 배포함으로써 가용성을 보장한다.
컨트롤러 매니저
컨트롤러 매니저는 클러스터의 백그라운드에서 컨트롤러 등을 관리함. 컨트롤러는 구성 변경을 감시하고 클러스터를 원하는 형태로 만드는 작업을 수행함.
컨트롤러 예시
노드 컨트롤러
클러스터의 노드를 모니터링하고 노드가 가동하거나 종료할 때 Response함. 그리고 이를 통해 스케줄러는 노드의 가용성을 파악하고 스케줄링 작업을 수행함엔드포인트 컨트롤러
API에서 엔드포인트 레코드를 생성해 서비스와 파드를 연결하고 서비스를 실행하는 파드를 가리키는 주소를 반환하도록 DNS 구성을 변경함레플리케이션 컨트롤러
레플리케이션 컨트롤러는 원하는 수의 파드 snapshot이 클러스터에서 실행되고 있는지 확인함.
Kubelet
컨테이너가 정상적으로 작동하는지 모니터링함. Kubele은 파드를 설명이 적힌 (파드스펙) YAML, JSON 등의 정보를 바탕으로 컨테이너를 모니터링함.
Kube-Proxy
서비스들 간의 네트워크 프록시와 로드 밸런서를 생성함
파드
파드는 클러스터에서 실행 중인 프로세스를 뜻함.
일반적으로 파드 하나에 컨테이너 하나를 포함시키지만 단단히 결합된 컨테이너 그룹을 하나의 파드로 구성하기도 함.
컨테이너 런타임
컨네테이너 런타임은 컨테이너의 패키지와 결합된 애플리케이션을 부팅하는 기본 리소스와 라이브러리 세트를 제공해 컨테이너를 실행할 수 있게 함. 컨테이너 런타임에는 로킷과 도커 등이 있음.
컨테이너 레지스트리
컨테이너를 배포할 때마다 매번 빌드하고 라이브러리를 가져오고 하기엔 시간이 좀 걸리니까 한번 만들어진 컨테이너 이미지를 컨테이너 레지스트리에 저장하고 필요할 때 사용하도록 한다.