호랑이한테물릴래

쿠버네티스 컴포넌트(Component) 정리 본문

DevOps/Kubernetes

쿠버네티스 컴포넌트(Component) 정리

호랑이한테물릴래 2022. 9. 12. 17:03
반응형

쿠버네티스의 아키텍처는 크게 Control Plane, Node로 나뉜다. 아래 이미지를 보면 클러스터의 아키텍처를 쉽게 파악할 수 있다.

Control Plane과 Worker Node

Control Plane

  • '마스터노드(Master Node)' 라고 불린다.
  • Control Plane은 클러스터의 Work Node와 Pod를 관리한다.
  • 프로덕션 환경에서, Control Plane은 일반적으로 여러 PC에서 실행되며 하나의 클러스터가 여러 노드들을 관리하여 고가용성과 내결함성을 제공한다.
  • Control Plane CLI와 UI를 통해서 API 서버를 통해 Input 요청받는다.
  • 또한, 마스터 노드에서는 사용자 workload를 사용하지 않는것이 좋다.

Node

  • '작업자 노드(Worker Node)'라고 불린다.
  • 컨테이너화된 어플리케이션을 실행하는데 필요한 서비스가 포함된 가상 또는 물리적 시스템이다.
  • 쿠버네티스 클러스터는 적어도 하나의 작업자 노드가 필요하다.
  • 작업자 노드는 어플리케이션 workload의 컴포넌트인 Pod를 호스트되며 이 Pod는 작업자 노드에 의해서 스케쥴링되고 오케스트레이션된다. 
  • 그래서, 스케일 업, 스케일 다운을 노드를 추가하거나 삭제하면서 진행할 수 있다.

Control Plane의 컴포넌트

Contorl Plane의 컴포넌트들은 클러스터 이벤트와 상태에 따라 클러스터의 global 결정에 활용된다. 그럼 어떤 종류의 컴포넌트가 있는지 알아보자.

1) API Server

  • API 서버는 Kubernetes API를 expose한다.
  • REST/kuberctl의 Entry point로, 쿠버네티스 Control plane의 프론트라고 볼 수 있다.
  • API 서버는 모든 클러스터 컴포넌트 상태를 파악하여 관리하며 컴포넌트의 상호작용에 사용된다.
  • 수평적으로 확장될 수 있도록 설계되어 있다.
  • YAML/JSON 매니패스트 파일을 사용한다.
  • API 서버는 API에 대한 요청을 검증하고 처리한다.

2) etcd

  • etcd는 지속적이며, 분산된 높은 가용성의 key-value 스토어다.
  • stateful, persistent한 스토리지로 쿠버네티스 클러스터의 모든 데이터를 보관한다.
  • Control plane의 컴포넌트 중 하나가 되거나 외부에서 구성될 수 도 있다.

3)  Scheduler

  • Worker node의 파드를 스케쥴링한다.
  • API 서버를 지속적으로 감시하여 새롭게 생성된 파드를 확인하며, 작동할 수 있는 노드를 선택한다.
  • 적절한 노드가 없을 경우, 준비된 노드가 나타날 때 까지 파드는 pending 상태에 놓이게 된다.

4) Controler Manager

  • API 서버를 통해서 오브젝트들의 상태를 파악한다.
  • 지속적으로 오브젝트의 현재 상태와 설계된 상태(목표)를 계속해서 확인한다.
  • 간단히 말해서, 컨트롤러의 컨트롤러라고 불린다.
  • 컨트롤러를 동작하게 한다. 컨트롤러들은 지역적으로 분리되어 작동한다. 이 방식은 오히려 복잡도를 줄이며, 그들은 간단한 binary와 single process로 작동하게 된다.

+ 컨트롤러 종류

- Node Controller : 노드가 다운될때 공지하는 역할을 한다.

- Job Controller : Job 오브젝트가 잘 작동하거나, 파드를 생성하는 것을 감시한다.

- Endpoints Controller : Service와 Pod의 Endpoint를 할당하는 역할을 한다.

- Service Account & Token Controllers : 디폴트 account와 API access Token를 생성한다.

5) Cloud Contoller Manager

  • 클러스터가 클라우드 환경에서 작동할 때, 클라우드 기술과 함께 통합된 Controller manager다.
  • Cloud provider의 컨트롤러를 작동하는데 사용된다.
  • 클라우드 컨트롤러 매니저는 클러스터가 Cloud Provider의 API에 연결될 수 있도록 한다. 
  • 또한, 클라우드 플랫폼과 상호작용하는 컴포넌트들을 분리한다.

Worker Node의 컴포넌트

워커 노드의 컴포넌트들은 파드의 동작을 유지하며, 쿠버네티스의 런타임 환경을 제공한다.

1) Kubelet

  • 클러스터에 속한 각 노드들을 동작하게하는 에이전트다.
  • 컨테이너들이 파드에서 작동할 수 있게 한다.
  • 파드를 인스턴스화, 실행한다.
  • Work 작업을 위해 API 서버를 감시한다.

2) Kube-proxy

  • 컴포넌트와 네트워킹할 수 있도록하는 중요한 역할을 한다.
  • IP와 프록시 관련 네트워크 매니징을 한다.
  • 네트워크 프록시로, 클러스터의 각 노드가 작동하는 역할을 한다.
  • 각 파드가 특별한 IP 주소를 할당받을 수 있도록 한다.
  • 모든 컨테이너가 파드에서 하나의 IP를 공유할 수 있도록 할 수 있다.
  • 쿠버네티스가 서비스를 네트워킹할 수 있게 하거나, 모든 파드들을 로드 밸런싱한다.

3) Container Runtime

  • 컨테이너 런타임은 컨테이너들을 실행하는 소프트웨어다.
  • 컨테이너를 실행하기 위해 각 워커노드는 컨테이너 런타임 엔진을 가지고 있다.
  • 컨테이너 이미지 레지스트리의 이미지를 활용해서 컨테이너를 시작하고 중단하는 역할을 한다.

 

 

반응형
0 Comments
댓글쓰기 폼