마스터 노드와 워커 노드

728x90
반응형

출처 : 그림과 실습으로 배우는 도커 & 쿠버네티스

 

 

클러스터의 구성 - 마스터 노드와 워커 노드

  • 쿠버네티스는 전체적인 제어를 담당하는 마스터 노드와 실제 동작을 담당하는 워커 노드로 구성된다.
  • 노드란 물리적 서버라고 생각하면 된다.
  • 마스터 노드
    • 마스터 노드에서 컨테이너를 실행하지는 않으며 워커 노드에서 실행되는 컨테이너를 관리하는 역할
    • 컨테이너 엔진이 설치되지 않는다. (관리만으로도 벅참)
  • 워커 노드
    • 실제 서버에 해당하는 부분
    • 컨테이너가 실제 동작하는 서버
    • 컨테이너가 동작해야 하므로 컨테이너 엔진이 설치되어야 한다.
  • 마스터 노드와 워커 노드로 구성된 쿠버네티스 시스템을 클러스터라고 한다.
  • 클러스터는 사람이 개입하지 않아도 마스터 노드에 설정된 내용에 따라 워커 노드가 관리되며 자율적으로 동작한다.
  • 관리자는 마스터 노드의 초기 설정 후 조정만 하면 되며, 관리자가 직접 워커 노드를 관리할 필요가 없다.

 

 

쿠버네티스를 사용하려면 먼저 설치가 필요하다

  • 쿠버네티스는 도커 엔진 등의 컨테이너 엔진과는 별개의 소프트웨어다.
  • 쿠버네티스 소프트웨어와 CNI(Container Networking Interface)를 설치해야 한다.
  • CNI 소프트웨어는 플란넬, 팔리코, AWS VPC CNI 등이 있다.
  • 마스터 노드에는 컨테이너의 상태를 관리하기 위해 etcd라는 데이터베이스가 설치된다.
  • 워커 노드에는 도커 엔진 같은 컨테이너 엔진이 필요하다.
  • 마스터 노드를 설정하는 관리자의 컴퓨터에는 kubectl을 설치한다. kubectl을 설치해야 마스터 노드에 로그인해 초기 설정을 진행하거나 추후 조정이 가능하다.
  • 정리하자면 쿠버네티스 소프트웨어와 CNI는 마스터 노드와 워커 노드 모두에 설치되어야하고, etcd는 마스터 노드, 컨테이너 엔진은 워커 노드에만 설치하면 된다.

 

 

컨트롤 플레인(제어판)과 kube-let

  • 마스터 노드는 컨트롤 플레인을 통해 워커 노드를 관리한다.
  • 컨트롤 플레인은 5가지 컴포넌트로 구성된다.
    • kube-apiserver : 외부와 통신하는 프로세스. kubectl로부터 명령을 전달받아 실행한다.
    • kube-controller-manager : 컨트롤러를 통합 관리, 실행한다.
    • kube-scheduler : 파드를 워커 노드에 할당한다.
    • cloud-controller-manager : 클라우드 서비스와 연동해 서비스를 생성한다.
    • etcd : 클러스터 관련 정보 전반을 관리하는 데이터베이스
  • etcd 외에는 쿠버네티스에 포함되어 있어서 추가로 설치할 필요 없다. (쿠버네티스랑 etcd만 설치하면 됨)

 

  • 워커 노드에서는 kube-let과 kube-proxy가 동작한다.
    • kube-let : 마스터 노드의 kube-scheduler와 연동하며 워커 노드에 파드를 배치하고 실행한다. 실행 중인 파드의 상태를 정기적으로 모니터링해서 kube-scheduler에 통지한다.
    • kube-proxy : 네트워크 통신의 라우팅 메커니즘
  • kube-let과 kube-proxy도 쿠버네티스에 포함되어 있어서 추가로 설치할 필요 없다.

 

 

쿠버네티스는 항상 바람직한 상태를 유지한다

  • 쿠버네티스는YAML 파일에 상태를 정의하고, 자동으로 컨테이너를 생성하거나 삭제하면서 설정한 상태를 만들고 유지한다.
  • 도커 컴포즈는 옵션을 지정해 수동으로 컨테이너의 수를 바꿀 수는 있지만 모니터링 기능이 없어서 컨테이너를 만들 때 외에는 관여하지 않는다. 반면에 쿠버네티스는 이 상태를 유지하는 기능이 있다.
  • 컨테이너가 망가졌다면 쿠버네티스는 알아서 망가진 컨테이너를 삭제하고 새 컨테이너를 생성한다.

 

쿠버네티스를 사용하는 시스템에서 컨테이너 삭제

  • 쿠버네티스의 기능은 자동으로 상태를 유지하는 것으로, 컨테이너를 삭제하고 싶으면 삭제 커맨드를 입력하는 것이 아닌 파일에서 바람직한 상태를 수정해야 한다.
  • 도커 커맨드를 통해 컨테이너를 직접 삭제할 수 있지만, 쿠버네티스는 컨테이너가 하나 모자란 상태로 인식하고 새로 컨테이너를 새로 생성해버린다.
  • 컨테이너를 삭제하려면 반드시 바람직한 상태에 정의된 컨테이너의 수를 줄여야 한다.

 

etcd의 역할

  • 쿠버네티스는 정의 파일(매니페스트 파일)이 데이터베이스로 관리된다.
  • 쿠버네티스가 정의 파일을 읽으면 그 내용은 etcd에 저장된다.

 

 

 

728x90
반응형