본문 바로가기

공부 기록/영상 후기

[초보를 위한 쿠버네티스 안내서] 쿠버네티스 아키텍처 1/3 (구성/설계)

https://youtu.be/SNA1sSNlmy0

Desired State

1. 상태 체크(Observe) : 현재 상태 == 원하는 상태

2. 차이점 발견(Diff) : 현재 상태 != 원하는 상태

3. 조치(Act) : 현재 상태 -> 원하는 상태

- 위의 단계를 반복(Loop)

- Replication Controller, Endpoint Controller, Namespace Controller, Custom Controller, ML Controller, CI/CD Controller ...

  

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 또는 gqu-enabled, ...)

  

Master 상세 > Controller

- 논리적으로 다양한 컨트롤러가 존재(복제 컨트롤러, 노드 컨트롤러, 엔드포인트 컨트롤러 ...)

- 끊임없이 상태를 체크하고 원하는 상태를 유지

- 복잡성을 낮추기 위해 하나의 프로세스로 실행

  

Node 상세 > kubelet

- 각 노드에서 실행

- Pod을 실행/중지하고 상태를 체크

- CRI(Container Runtime Interface) (docker, Containerd, CRI-O, ...)

  

Node 상세 > proxy

- 네트워크 프록시와 부하 분산 역할

- 성능 상의 이유로 별도의 프록시 프로그램 대신 iptables 또는 IPVS를 사용(설정만 관리)