아키텍처 이해
쿠버네티스 클러스터는 두 부분으로 나뉘어진다.
- control plane
- worker node
컨트롤 플레인 구성요소
control plane은 클러스터 기능을 제어하고, 전체 클러스터가 동작하게 만드는 역할을 한다.
control plane 구성 요소(component)는 다음과 같다.
- etcd 분산 저장 스토리지
- API 서버
- 스케줄러
- 컨트롤러 매니저
이들 구성 요소(component)는 클러스터 상태를 저장하고 관리하지만, 애플리케이션 컨테이너를 직접 실행하진 않는다.
워커 노드에서 실행하는 component(구성요소)
컨테이너를 실행하는 작업은 각 워커 노드에서 실행되는 component(구성 요소)들이 담당한다.
- Kubelet
- 쿠버네티스 서비스 프록시 (kube-proxy)
- 컨테이너 런타임(Docker, rocket 외 기타)
애드온 component(구성요소)
컨트롤 플레인과 노드에서 실행되는 구성 요소 외에도 k8s 기능을 제공하기 위해 몇 가지 추가 component(구성요소)들이 있다.
- 쿠버네티스 DNS 서버
- 대시보드
- 인그레스 컨트롤러 Ingress Controller
- 힙스터
- 컨테이너 네트워크 인터페이스 플러그인
참고) control plane 구성 요소의 상태 확인 명령어
kubectl get componentstatuses
쿠버네티스 component(구성요소)가 서로 통신하는 법
쿠버네티스 시스템 구성요소는 오직 API 서버
하고만 통신한다. 서로 직접 통신하지 않는다.
쿠버네티스 component(구성요소)의 여러 인스턴스 실행
워커 노드의 구성 요소들은 모두 동일한 노드에서 실행돼야 하지만, controle plane의 구성요소는 여러 서버에 걸쳐 실행될 수 있다.
etcd
와 API 서버
는 여러 인스턴스를 동시에 활성화해서 작업을 병렬로 수행할 수 있지만,스케줄러
와 컨트롤러 매니저
는 하나의 인스턴스만 활성화되고 나머지는 대기 상태에 있게 된다.
쿠버네티스 component(구성요소) 실행 방법
Kubelet은 일반 시스템 구성 요소(데몬)로 실행되는 유일한 요소이며, Kubelet이 다른 component들(api 서버, 스케줄러, 컨트롤러 매니저, etcd 등을 포함)을 pod로 실행한다.
(Kubelet은 무조건 시스템 구성 요소(데몬)로 실행돼야 한다.)
참고
쿠버네티스 인 액션(마르코 룩샤) 11장
https://kubernetes.io/ko/docs/concepts/overview/components/
'개발자: 지식 정리 > 쿠버네티스' 카테고리의 다른 글
쿠버네티스 클러스터 구성 요소 및 동작 이해 (4) - Kubelet (0) | 2023.01.15 |
---|---|
쿠버네티스 클러스터 구성 요소 및 동작 이해 (3) - 스케줄러, 컨트롤러 (0) | 2023.01.15 |
쿠버네티스 클러스터 구성 요소 및 동작 이해 (2) - API 서버 (0) | 2023.01.15 |
쿠버네티스 클러스터 구성 요소 및 동작 이해 - (1) etcd (0) | 2023.01.15 |
쿠버네티스 - API 서버 보안 : RBAC (0) | 2022.06.13 |