Cluster
Components
- Master components
- kube-apiserver
컨트롤 플레인내 프론트엔드
인스턴스간의 트래픽을 균형있게 조절함
- etcd
모든 클러스터 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용됨
Key - Value방식의 저장소
- kube-scheduler
Node가 배정되지 앟은 새로 생성된 Pod를 감지하고, 실행할 Node를 선택하는 컨트롤 플레인 컴포넌트
Scheduling 결정을 위해 고려되는 요소
- 리소스에 대한 개별 및 총체적 요구사항
- 하드웨어/소프르웨어/정책적 제약
- Affinity 및 Anti-Affinity 명세
- 데이터 지역성
- 워크로드간 간섭
- 데드라인
- kube-controller-manager
컨트롤러 프로세스를 실행하는 컨트롤 플레인 컴포넌트
구성요소
- 노드 컨트롤러: 노드가 다운되었을때 통지와 대응에 관한 책임을 가진다.
- 레플리케이션 컨트롤러: 시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 Pod들을 유지시켜주는 책임을 가진다.
- 엔드포인트 컨트롤러: 엔트포인트 오브젝트를 채운다(즉, Service와 Pod를 연결시킨다.)
- 서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성한다.
- cloud-controller-manager
클라우드별 컨트롤 로직을 포함하는 쿠버네티스 컨트롤 플레인 컴포넌트
클라우드 컨트롤러 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고, 해당 클라우드 플랫폼과 상호작용하는 컴포넌트와 클러스터와만 상호작용하는 컨포넌트를 구분할 수 있게 해준다.
cloud-controller-manger는 클라우드 제공자 전용 컨트롤러
- Node components
- kubelet
클러스터의 각 Node에서 실행되는 Agent, kubelet은 Pod에서 Container가 확실하게 동작하도록 관리
- kube-proxy
클러스터의 각 Node에서 실행되는 네트워크 프록시로, 쿠버네티스의 Service 개념의 구현부
Node의 네트워크 규칙을 유지 및 관리한다. (내부 네트워크 세션이나 클러스터 밖에서 Pod로 네트워크 통신을 할 수 있도록 해준다)
- Container runtime
컨테이너 실행을 담당하는 Software