쿠버네티스 위에서 서비스를 띄우고 있음에도 쿠버네티스에 대한걸 잘 모르기에 아주 기본 개념만 간단히 정리하기로했다.
입에 익은 단어도 있고, 새롭게 알게된 개념도 있고,, 갈길이 아주 멀지만 파이팅!
쿠버네티스 클러스터
- 컨테이너화된 애플리케이션을 실행하는 노드의 집합
- 노드는 Master Node / Worker Node 로 나뉜다.
- 쿠버네티스를 배포 및 실행하면 클러스터를 실행한다는 의미이다.
Control Plane (Master Node)
전체적인 클러스터 상태를 관리
- etcd, kube-api-server, scheduler, controller manager 로 구성된다.
Node (Worker Node)
쿠버네티스 런타임 환경을 제공하고, 팟(Pod, 어플리케이션)을 구동시키는 단위
- kublet, kube-proxy, pod & container 로 구성된다.
Control Plane 구성요소 살펴보기
kube-api-server
- 쿠버네티스 http api를 노출한다.
- 해당 서버는 쿠버네티스 리소스, 클러스터의 상태 관리 및 동기화 작업에 사용된다.
- etcd를 데이터 저장소로서 사용한다.
etcd
- API 서버 데이터의 key-value store 이다. (모든 클러스터 관련 데이터가 저장된다.)
scheduler
- 노드가 할당되지 않은 파드를 감지하고, 팟을 노드에 배정해주는 역할을 한다.
controller manager
- 클러스터의 전반적인 상태를 모니터링한다.
- 말그대로 “컨트롤” (조절)하는 영역의 컴포넌트
Node (worker node) 구성요소 살펴보기
kublet
- 컨테이너들로 구성된 팟들이 스펙에 맞춰 잘 동작하게끔하는 에이전트
kube-proxy
- “Service”를 구현
- 클러스터 노드에서 실행되는 네트워크 통신 관리 프록시
- 각 pod들의 endpoint는 하나의 서비스 endpoint로 묶일 수 있다.
- 일종의 로드밸런서의 역할로서 활용한다.
pod
- 쿠버네티스의 가장 작은 배포단위
- 여러개의 컨테이너로 구성될 수 있다.
- 컨테이너는 저장소/네트워크 리소스를 공유한다.