본문 바로가기
개발자: 지식 정리/쿠버네티스

쿠버네티스 클러스터 구성 요소(component)란?

by 머작가2 2022. 6. 6.

아키텍처 이해

쿠버네티스 클러스터는 두 부분으로 나뉘어진다.

  • control plane
  • worker node

컨트롤 플레인 구성요소

control plane은 클러스터 기능을 제어하고, 전체 클러스터가 동작하게 만드는 역할을 한다.
control plane 구성 요소(component)는 다음과 같다.

  • etcd 분산 저장 스토리지
  • API 서버
  • 스케줄러
  • 컨트롤러 매니저

이들 구성 요소(component)는 클러스터 상태를 저장하고 관리하지만, 애플리케이션 컨테이너를 직접 실행하진 않는다.

워커 노드에서 실행하는 component(구성요소)

컨테이너를 실행하는 작업은 각 워커 노드에서 실행되는 component(구성 요소)들이 담당한다.

  • Kubelet
  • 쿠버네티스 서비스 프록시 (kube-proxy)
  • 컨테이너 런타임(Docker, rocket 외 기타)

애드온 component(구성요소)

컨트롤 플레인과 노드에서 실행되는 구성 요소 외에도 k8s 기능을 제공하기 위해 몇 가지 추가 component(구성요소)들이 있다.

  • 쿠버네티스 DNS 서버
  • 대시보드
  • 인그레스 컨트롤러 Ingress Controller
  • 힙스터
  • 컨테이너 네트워크 인터페이스 플러그인

k8s 컴포넌트 ( https://kubernetes.io/ko/docs/concepts/overview/components/ )

참고) control plane 구성 요소의 상태 확인 명령어

kubectl get componentstatuses

쿠버네티스 component(구성요소)가 서로 통신하는 법

쿠버네티스 시스템 구성요소는 오직 API 서버하고만 통신한다. 서로 직접 통신하지 않는다.

쿠버네티스 component(구성요소)의 여러 인스턴스 실행

워커 노드의 구성 요소들은 모두 동일한 노드에서 실행돼야 하지만, controle plane의 구성요소는 여러 서버에 걸쳐 실행될 수 있다.

etcdAPI 서버는 여러 인스턴스를 동시에 활성화해서 작업을 병렬로 수행할 수 있지만,
스케줄러컨트롤러 매니저는 하나의 인스턴스만 활성화되고 나머지는 대기 상태에 있게 된다.

쿠버네티스 component(구성요소) 실행 방법

Kubelet은 일반 시스템 구성 요소(데몬)로 실행되는 유일한 요소이며, Kubelet이 다른 component들(api 서버, 스케줄러, 컨트롤러 매니저, etcd 등을 포함)을 pod로 실행한다.

(Kubelet은 무조건 시스템 구성 요소(데몬)로 실행돼야 한다.)


참고
쿠버네티스 인 액션(마르코 룩샤) 11장
https://kubernetes.io/ko/docs/concepts/overview/components/