컨트롤 플레인 컴포넌트
1. kube-apiserver
- kube-apiserver는 쿠버네티스 클러스터로 들어오는 요청을 가장 앞에서 접수하는 역할
- 쿠버네티스 커맨드 라인 도구인 kubectl을 사용해 각종 명령을 수행할 경우 이 명령은 kube-apiserver로 전송
- kubectl을 사용해 각종 명령을 수행할 경우 kube-apiserver는 이 요청의 처리 흐름에 따라 적절한 컴포넌트로 요청을 전달하는 역할까지 맡고 있음
2. etcd
- 키-값(key-value) 형태로 저장하는 저장소
- 클러스터 및 리소스의 구성 정보, 상태 정보 및 명세 정보 등이 저장
- 안정적인 동작을 위해 자료를 분산해서 저장하는 구조
3. kube-scheduler
- 쿠버네티스 클러스터는 여러 노드로 구성
- 기본적인 작업 단위라고 할 수 있는 파드는 여러 노드 중 특정 노드에 배치되어 동작
- 새로 생성된 파드를 감지하여 어떤 노드로 배치할지 결정하는 작업을 스케줄링
- 이런 스케줄링을 담당하는 컴포넌트가 kube-scheduler
4. kube-controller-manager
- kube-controller-manager는 다운된 노드가 없는지
- 파드가 의도한 복제(Replicas) 숫자를 유지하고 있는지
- 서비스와 파드는 적절하게 연결되어 있는지
- 네임스페이스에 대한 기본 계정과 토큰이 생성되어 있는지를 확인
- 적절하지 않다면 적절한 수준을 유지하기 위해 조치하는 역할
노드 컴포넌트
1. kublet
- 쿠블릿(kubelet)은 노드에서 컨테이너가 동작하도록 관리해 주는 핵심 요소
- 각 노드에서 파드를 생성하고 정상적으로 동작하는지 관리하는 역할을 담당
- 우리가 쿠버네티스의 워크로드를 관리하기 위해 내려지는 명령은 kubelet을 통해 수행된다.
- 쿠버네티스 파드를 관리하기 위해 작성하는 YAML을 쿠버네티스 클러스터에 적용하기 위해 kubectl 명령어를 사용할 때, 이 YAML이 kube-apiserver로 전송된 후 kubelet으로 전달
- kubelet은 이 YAML을 통해 전달된 파드를 생성 혹은 변경하고, 이후 이 YAML에 명시된 컨테이너가 정상적으로 실행되고 있는지 확인
2. container runtime
- 컨테이너 런타임은 파드에 포함된 컨테이너 실행을 실질적으로 담당하는 애플리케이션을 의미
- 쿠버네티스가 컨테이너를 제어하기 위해 제공하는 표준 규약인
컨테이너 런타임 인터페이스(CRI)를 준수하여 쿠버네티스와 함께 사용할 수 있는 외부 애플리케이션들을 의미
3. kube-proxy란?
Kube-Proxy는 Kubernetes에서 네트워크 동작을 관리하는 컴포넌트
- 다른
Worker Node의 Pod들 간의 통신이 가능하게 해줌
- 모든 노드 하나씩 위치하는 오브젝트인
DaemonSet의 형태로 배포되어 있음