기본 개념

Container Orchestration

  • 보통의 프로덕션 환경이라면 다수의 컨테이너를 실행시킬 것이다. 이렇게 실행중인 다수의 컨테이너들을 관리하는 기술이 필요하다.

  • 즉, 장애가 발생하면 해당 프로세스를 재실행해주고 부하가 늘어나면 컨테이너를 늘리는 등의 작업을 맡아주는 기술이 필요하다.

  • Docker Swarm, MESOS, Kubernetes는 Container Orchestration 툴이다.

쿠버네티스 구성요소

  • 노드

    • 쿠버네티스가 설치되어 있는 물리 혹은 가상의 장비

    • 컨테이너가 실행될 수 있는 장비를 의미한다.

  • 클러스터

    • 노드들의 집합

    • 여러 노드를 둠으로써 부하를 분산할 수 있으며, 하나의 노드에 장애가 발생해 사용할 수 없는 경우 다른 노드를 사용할 수 있어 고가용성에 유리하다.

  • 마스터

    • 클러스터를 관리하는 노드

    • 마스터 노드는 일반 노드와 달리 컨테이너가 실행되지 않는다.

    • 클러스터에 속하는 노드의 정보를 가지며, 노드들을 모니터링하며 실패할 경우 워크로드를 이동하는 등의 역할을 한다.

  • 컴포넌트

    • 쿠버네티스를 설치하면 아래의 컴포넌트들이 설치된다.

    • API Server

      • CLI를 제공해 사용자, 장비 관리 등 쿠버네티스 클러스터와 상호작용할 수 있도록 한다.

    • etcd

      • 분산형 key value 저장소로 클러스터 관리를 위한 정보들을 저장한다.

      • 마스터들 간에 충돌이 없도록 락을 잘 구현해야 한다.

    • Scheduler

      • 여러 노드에 작업 또는 컨테이너를 분산하는 역할을 한다.

      • 새로 생성된 컨테이너를 확인하고 노드에 할당한다.

    • Controller

      • 노드, 컨테이너 또는 엔드포인트가 다운될 때 이를 감지하고 대응하는 역할을 한다.

    • Container Runtime

      • 컨테이너를 실행시킬 때 사용되는 소프트웨어

      • Docker를 비롯하여 Rocket, Cryo 등의 컨테이너 툴을 사용할 수 있다.

    • Kubelet

      • 클러스터 내의 각 노드에 실행되는 에이전트

      • 컨테이너가 노드에서 잘 수행되고 있는지 확인하고 마스터 노드와 통신하는 역할을 한다.

Last updated