Kubernetes
아키텍처
- API Server, Scheduler, kubelet등 여러개의 컴포넌트로 이루어진 집합체
- 사용자의 애플리케이션이나 데이터와 구별하여 Control Plane 이라고 부른다.
마스터
- API Server
- Scheduler
- Controller Manager
- etcd
노드
- kubelet
- kube-proxy
- 컨테이너 런타임 ( 애플리케이션 )
Add-On
- Dashboard
- DNS
- Ingress Controller
- 감시용 에이전트 ( Prometheus Node Exporter, Microsoft OMS Agent 등 )
설계 원칙
-
API Server만이etcd에 접근할 수 있다 -
부분적인 서버 장애가 클러스터 전체의 다운으로 이어지지 않도록 해야한다.
-
각 컴포넌트에 대한 지시를 잃어버려도 최근의 지시를 바탕으로 처리를 계속할 수 있도록 한다.
-
각 컴포넌트는 관련된 설정이나 상태를 메모리에 저장하지만 영구화는
API Server를 통해etcd에 한다. -
사용자나 다른 컴포넌트가 오브젝트를 변화시킨 것을 감지할 수 있도록 컴포넌트는
API Server를 워치한다. -
API Server에서 폴링하는 것이 아니라 각 컴포넌트가 자율적으로 워치한다.