[Kubernetes] 쿠버네티스 아키텍처 (구성/설계)



🟢 Master 상세 - etcd
"모든 데이터를 확실하게 관리"
- 모든 상태와 데이터를 저장
- 분산 시스템으로 구성하여 안전성을 높임 (고가용성)
- 가볍고 빠르면서 정확하게 설계 (일관성)
- Key(directory)-Value 형태로 데이터 저장
- TTL(time to live), watch 같은 부가 기능 제공
- 백업은 필수
🟢 Master 상세 - API server
"조회나 요청은 모두 나를 통해서"
- 상태를 바꾸거나 조회
- etcd와 유일하게 통신하는 모듈
- REST API 형태로 제공
- 권한을 체크하여 적절한 권한이 없을 경우 요청을 차단
- 관리자 요청 뿐 아니라 다양한 내부 모듈과 통신
- 수평으로 확장되도록 디자인
🟢 Master 상세 - Scheduler
"어떤 노드에 어떤 컨테이너를?"
- 새로 생성된 Pod을 감지하고 실행할 노드를 선택
- 노드의 현재 상태와 Pod의 요구사항을 체크
- 노드에 라벨을 부여
- ex) a-zone, b-zone 또는 gpu-enabled, ...
🟢 Master 상세 - Controller
"LOOP LOOP 돌고 돌고 무한반복"
- 논리적으로 다양한 컨트롤러가 존재
- 복제 컨트롤러
- 끊임 없이 상태를 체크하고 원하는 상태를 유지
- 복잡성을 낮추기 위해 하나의 프로세스로 실행
🔵 Node 상세 - Kubelet
'컨테이너 관리 확실하게'
- 각 노드에서 실행
- Pod을 실행/중지하고 상태를 체크
- CRL (Container Runtime Interface)
- docker, Containerd, CRI-O ...
🔵 Node 상세 - Proxy
'내/외부 통신 설정하기'
- 네트워크 프록시와 부하 분산 역할
- 성능상의 이유로 별도의 프록시 프로그램 대신
iptables 또는 IPVS를 사용 (설정만 관리)