[CS, k8s] Container Orchestration, k8s

전우석·2022년 9월 1일
0
post-thumbnail

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편
쿠버네티스

0개의 댓글