Container Orchestration
- 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 것으로 많은 수 의 컨테이너와 호스트를 배포하고 관리해야 하는 기업에서 사용한다.
- 대표적인 Container Orchestration으로는 k8s, Docker Swarm, Apache Mesos가 있다.
k8s
- 컨테이너화 된 애플리케이션의 대규모 배포, 스케일링 및 관리를 편리하게 해주는 Container Orchestration tool이다.
- 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크 제공
- 주로 docker를 런타임으로 사용하여 작동한다.
k8s 구성 요소
Control-plane
클러스터에 관한 전반적인 결정을 수행
- Kube-apiserver
클러스터 내 변화를 수행하기 위한 모든 다양한 작업들의 중심 역할
클러스트 내의 모든 작업을 오케이스트레이션한다.
- etcd
Key - Value 형식으로 정보를 저장하는 DB
2379의 포트번호를 사용한다.
- kube-scheduler
pod가 어떤 노드로 갈 것인지 결정하는 역할 (실제로 노드에 pod를 배치하는 것은 아니다. pod 배치는 kubelt이 담당)
노드 선정은 pod가 요구한 resource를 보고 filtering 혹은 pod를 배치하고 해당 노드에 더 많은 resource가 남는 경우를 상위로 rank 지정한다.
- kube-controller-manager
시스템 내 다양한 구성 요소의 상태를 지속적으로 모니터링하고, 전체 시스템을 원하는 상태로 만들기 위해 작동하는 프로세스
Node Component
동작 중인 pod를 유지시키고 k8s 런타임 환경을 제공하며, 모든 노드 상에서 동작한다.
- kubelt
kube-scheduler의 지시에 따랄 컨테이너를 load, unload하는 역할
worker 노드에 pod를 생성하기 위해 container runtime에 요청을 전달
pod와 container의 상태를 지속적으로 모니터링하고, 결과를 kube-apiserver에 주기적으로 전송
- kube-proxy
pod 네트워크는 모든 pod가 통신할 수 있도록 클러스터의 모든 노드에 생성되는 가상 네트워크
- Container runtime
Container 실행을 담당하는 소프트웨어이다.
정리
많은 수 의 컨테이너 관리 혹은 배포할 시 Container Orchestration을 사용하여 편하게 작업할 수 있다.
k8s는 여러 구성 요소를 통해 원활하게 Container Orchestration을 진행할 수 있도록 도와준다.
참고문서
쿠버네티스 컴포넌트
컨테이너 오케이스트레이션이란?
쿠버네티스 알아보기 1편
쿠버네티스