Nextra 2 Alpha
  • infra
  • kubernetes
  • 마스터노드와 워커노드

마스터노드와 워커노드

쿠버는 전체적인 제어를 담당하는 마스터 노드와 실제 동작을 담당하는 워커 노드라는 두가지 유형의 노드로 구성된다.

  • 마스터 노드 : 지휘자라고 생각하자. 컨테이너를 악기라고 생각해보자. 지휘자는 악기를 가지지 않는다. 따라서 마스터 노드는 관리만 할 뿐 따로 컨테이너를 실행하지 않는다.
  • 워커노드: 실제 서버에 해당하는 부분이고, 컨테이너가 실제 동작하는 서버다. (컨테이너 엔진이 설치돼야 한다.) 마스터 노드와 워커 노드로 구성된 쿠버네티스 시스템을 클러스터라고 한다.

쿠버네티스를 설치할 때 추가로 설치해야하는 프로그램이 있다 바로 etcd이다. etcd는 key/value 데이터베이스로 컨테이너 등의 상태를 관리하기위해 필요하다.

마스터노드와 워커노드의 구성

컨트롤 플레인(제어판)을 통해 워커 노드를 관리한다. 컨트롤 플레인은 다섯 가지의 컴포넌트로 구성된다.

  • kube-apiserver : 외부와 통신하는 프로세스 , kubectl(Command line tool (kubectl))로 부터 명령을 전달 받아서 실행한다.
  • kube-controller-manager : 컨트롤러를 통합 관리 실행함
  • kube-scheduler : 파드를 워커 노드에 할당한다.
  • cloud-controller-manager : 클라우드 서비스와 연동해 서비스를 생성한다.
  • etc: 클러스터 관련 정보 전반을 관리하는 데이터베이스

Kubernetes(쿠버네티스)에서 파드는 가장 작은 배포 단위로, 하나 이상의 컨테이너를 그룹화한 것을 가리킨다.

파드는 일반적으로 동일한 호스트 시스템에서 실행되며, 서로 네트워크와 스토리지를 공유한다. 이러한 공유 리소스를 통해 파드 내의 컨테이너는 서로 통신하거나 데이터를 공유할 수 있다. 또한, 파드는 스케일링과 로드 밸런싱을 쉽게 처리할 수 있는 단위로 사용된다.

파드는 쿠버네티스에서 생성, 배포, 업데이트, 백업 및 모니터링이 가능한 기본 배포 단위다. 쿠버네티스는 파드를 관리하고 스케줄링하여 클러스터 내의 여러 노드에 분산시킨다. 각 파드는 YAML 또는 JSON 형식의 매니페스트 파일을 사용하여 정의되며, 이 파일에 파드의 스펙과 구성이 포함된다.

파드는 일반적으로 애플리케이션 컨테이너, 데이터베이스 컨테이너, 사이드카 컨테이너 등 다양한 역할의 컨테이너를 함께 실행하는 데 사용된다.

워커노드는 다음으로 구성된다.

  • kube-let : let은 “agent”또는 관리자를 의미한다. 워커노드의 관리자를 뜻한다. 해당 노드에서 파드를 실행하고 관리하며 마스터 노드와 통신하여 클러스터를 관리한다.
  • kupe-proxy : 네트워크 통신의 라우팅 매커니즘

쿠버네티스의 핵심 : 항상 바람직한 상태를 유지한다.

쿠버네티스에서 컨테이너를 생성하고 삭제할 수 있지만 일일이 명령어를 입력하는 방식을 사용하지는 않는다. 컨테이느에 대한 바람직한 상태를 YAML파일에 정의하고 자동으로 컨테이너를 생성 혹은 삭제하면서 바람직한 상태를 유지하는 것이 쿠버네티스의 핵심 기능이다.

도커 컴포즈와 비슷하게 들릴 수 있지만 차이점이 있다. 도커 컴포즈는 옵션을 지정해서 컨테이너 수를 바꿀 수는 있지만 모니터링 기능이 없어서 컨테이너를 만들 때 외에는 관리하지 않는다. 이에 비해 쿠버네티스에서는 이 상태를 유지하는 기능이 있다. 예를 들어 5개의 컨테이너를 관리하고 있는 쿠버네티스가 있다고 가정하자. 설정파일에서 컨테이너를 4개 관리하도록 변경하면 자동으로 1개의 컨테이너를 삭제한다.

쿠버네티스의 목표는 바람직한 상태를 유지하는 것이다. 이를 꼭 인지하자.