1. 마스터 노드
- Kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할을 한다. 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리(binary) 로 배포되기 때문에 마스터 노드에 있을 필요는 없으나 통상적으로 API 서버와 주로 통신하기 때문에 API 서버가 위치한 마스터 노드에 표현한다.
- API 서버 : 쿠버네티스 클러스터의 중심 역할을 하는 통로이다. 주로 상태 값을 저장하는 etcd 와 통신하지만, 그 밖의 요소들 또한 API 서버를 중심에 두고 통신하기 때문에 API 서버의 역할이 매우 중요하다.
- etcd : 구성 요소들의 상태 값이 모두 저장되는 곳이다. etcd 외의 다른 구성 요소는 상태 값을 관리하지 않기 때문에 etcd 의 정보만 백업되어 있다면 긴급항 장애 상황에서도 쿠버네티스 클러스터를 복구할 수 있다. 또한 분산저장이 가능한 key-value 형태이기 때문에 복제하여 여러 곳에 저장해두면 하나의 etcd 에서 장애가 나더라도 시스템의 가용성을 확보할 수 있다.
- 컨트롤러 매니저 : 컨트롤러 매니저는 쿠버네티스 클러스터의 오브젝트 상태를 관리한다. 워커 노드에서 통신이 되지 않는 경우, 상태 체크와 복구는 컨트롤러 매니저에 속한 노드 컨트롤러에서 이어진다. 또한 서비스와 파드를 연결하는 역할을 하는 엔드포인트 컨트롤러 또한 컨트롤러 매니저 속한다. 이와 같이 다양한 상태 값을 관리하는 주체들이 컨트롤러 매니저에 소속돼 각자의 역할을 수행한다.
- 스케줄러 : 노드의 상태와 자원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것인지를 결정하고 할당한다. 조건에 맞는 워커 노드에 지정하고, 파드가 워커 노드에 할당되는 일정을 관리하는 역할을 담당한다.
2. 워커 노드
- Kublet : 파드의 구성 내용(PdsSpec)을 받아서 컨테이너 런타임으로 전달하고, 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링한다.
- 컨테이너 런타임 (CRI, Container Runtime Interface) : 파드를 이루는 컨테이너의 실행을 담당한다. 파드 안에서 다양한 종류의 컨테이너가 문제 없이 작동하게 만드는 표준 인터페이스이다.
- 파드 : 쿠버네티스에서 애플리케이션의 최소 배포 단위이다. 파드는 하나 이상의 컨테이너를 묶어 관리하며, 이 컨테이너들이 같은 네트워크 네임스페이스와 스토리지를 공유하도록 설계되었다. VM 은 언제라도 죽을 수 있다고 가정하지 않고 디자인 하지만, 파드는 언제라도 죽을 수 있는 존재이다.
3. 그 외
- 네트워크 플러그인 : 쿠버네티스 클러스터의 통신을 위해서 네트워크 플러그인을 선택하고 구성해야 한다. 네트워크 플로그인은 일반적으로 CNI 로 구성하는데, 주로 사용하는 CNI 에는 Calico, Flannel, Cilium, Kube-router, Romana, WeaveNet, Canal 이 있다.
- CoreDNS : 클라우드 네이티브 컴퓨팅 재단에서 보증하는 프로젝트로, 빠르고 유연한 DNS 서버이다. 쿠버네티스 클러스터에서 도메인 이름을 이용해 통신하는 데 사용한다.
'개인공부' 카테고리의 다른 글
RKE2 Rancher 설치(3) (1) | 2024.12.12 |
---|---|
RKE2 Worker Node 설치(2) (0) | 2024.12.10 |
VMware Fusion, RKE2 Master Node 설치 (1) (3) | 2024.12.09 |
Socket.IO (0) | 2024.12.03 |
Chat Gpt 가 내준 컨테이너 관련 문제 10개 (2) | 2024.10.13 |