728x90
마스터 노드
0. kubectl
- 쿠버네티스 클러스터에 명령을 내리는 역할
- 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리로 배포되기 때문에 마스터 노드에 있을 필요는 없음
1. API 서버
- 쿠버네티스 클러스터의 중심 역할을 하는 통로(백본처럼)
2. etcd
- 구성 요소들의 상태 값이 key-value형태로 저장되는 곳
- etcd를 제외한 다른 구성 요소들은 상태 값을 따로 관리하지 않음
- 따라서 etcd의 정보만 백업되어 있으면 클러스터 복구 가능
- key-value는 분산 저장이 가능하여 복제해 여러 곳에 저장하면 한 곳에서 장애가 발생해도 시스템의 가용성 확보 가능
- 리눅스의 구성정보를 가지는 etc 디렉터리 + distributed
3. 컨트롤러 매니저
- 클러스터의 오브젝트 상태 관리
- 노드 컨트롤러, 레플리카셋 컨트롤러, 엔드포인트 컨트롤러 등이 있음
4. 스케줄러
- 노드의 상태와 자원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것인지 결정하고 할당함
- 파드를 조건에 맞는 워커 노드에 지정하고, 파드가 워커 노드에 할당되는 일정을 관리하는 역할
워커노드
5. kubelet
- 파드의 구성 내용(PodSpec)을 받아서 컨테이너 런타임으로 전달
- 파드 안의 컨테이너들이 정상 작동하는지 모니터링
6. 컨테이너 런타임(CRI, Container Runtime Interface)
- 컨테이너의 실행 담당
- 파드 안에서 다양한 종류의 컨테이너가 동작할 수 있도록 하는 표준 인터페이스
7. 파드(Pod)
- 한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위
- 언제라도 죽을 수 있는 존재
선택 가능한 구성 요소
11. 네트워크 플러그인
- 클러스터의 통신을 위해서 네트워크 플러그인을 구성
- 일반적으로 CNI로 구성하며, 주로 사용하는 CNI에는 Calico, Flannel, Cilium 등이 있음
CNI(Container Network Interface)
컨테이너의 네트워크 안정성과 확장성을 보장하기 위해 개발됨
구성 방식과 지원하는 기능, 성능이 각기 다르므로 사용 목적에 맞게 선택
12. CoreDNS
- CNCF 재단에서 보증하는 프로젝트
- 빠르고 유연한 DNS 서버
- 클러스터에서 도메인 이름을 이용해 통신하는 데 사용
- IP보다 도메인 네임을 편리하게 관리해주는 CoreDNS를 사용하는 것이 일반적
사용자 입장
1. kube-proxy
- 클러스터는 파드가 위치한 노드에 kube-proxy를 통해 파드가 통신할 수 있는 네트워크 설정
2. pod
- 배포된 파드에 접속하고 필요한 내용을 전달 받음
728x90