DevOps/Kubernetes

Kubernetes Component

Jen'_' 2022. 6. 22. 19:47
반응형

Kubernetes Component

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합입니다. 이런 클러스터는 최소 한 개의 worker node 가 존재하고, 그 worker node는 애플리케이션의 구성요소인 pod를 호스트 합니다. control plan은 worker node 와 클러스터 내부의 pod를 관리합니다. 흔히 control plan을 master node라고 부릅니다.

master node는 단일 또는 멀티 노드로 구동이 가능하지만 프로덕션 환경에서는 한대가 고장 나도 시스템의 중단 없이 계속 작동할 수 있도록 여러 대의 master node를 두고 운영합니다. 이때, master node의 개수는 정족수를 성립하기 위해서 홀수로 구성해야 합니다.

 

  1. Control Plan Component
    • kube-apiserver
    • etcd
    • scheduler
    • controller-manager
    • cloud-controller-manager (번외)
  2. Node Component
    • kubelet
    • kube-proxy

 

 

Control Plan Component

kube-apiserver

API 서버는 쿠버네티스 컨트롤 플레인의 프론트 엔드입니다. 일반적으로 kubectl 이라는 클라이언트를 통해 컨트롤 플레인과 통신할 수 있습니다. 위의 사진과 같이 다른 컴포넌트들과 통신하며, 제일 핵심인 컴포넌트입니다.

 

etcd

클러스터의 모든 데이터를 저장하는 key-value 형태의 데이터베이스입니다. 클러스터의 상태가 변화할 때마다 다른 컴포넌트들이 보내준 정보를 API 서버가 받아서 etcd 서버에 업데이트합니다.

 

scheduler

노드가 새로 생성된 파드를 감지하고, 배치할 node를 선택하는 컴포넌트입니다. 스케줄링 결정을 위해서 고려되는 요소는 리소스에 대한 개별 및 총체적 요구 사항, 하드웨어/소프트웨어/정책적 제약, 어피니티(affinity) 및 안티-어피니티(anti-affinity) 명세, 데이터 지역성, 워크로드-간 간섭, 데드라인을 포함합니다.

 

controller-manager

컨트롤러 매니저는 쿠버네티스의 다양한 컨트롤러를 관리합니다. 여기서 컨트롤러란? 시스템 안에서 다양한 컴포넌트들의 상태를 지속적으로 모니터링하는 프로세스입니다.  아래 사진에서 표시되는 다양한 컨트롤러들을 패키지화하여 컨트롤러 매니저가 관리합니다. 

 

cloud-controller-manager (번외)

클라우드 컨트롤러는 AWS, GCP, Azure 등 클라우드에 특화된 모듈입니다. 노드를 추가/삭제하고 로드밸런서를 연결하거나 볼륨을 붙일 수 있습니다.  자신의 사내 또는 PC 내부의 학습 환경에서 쿠버네티스를 실행 중인 경우의 클러스터에는 클라우드 컨트롤러 매니저가 없습니다.

 


Node Component

kubelet

클러스터의 각 노드에서 실행되는 에이전트이며, 파드에서 컨테이너가 healthy 상태로 동작하도록 관리합니다. 파드의 생성, 삭제, 복구, 상태 관리 등을 담당하며 노드에서 핵심이 되는 중요 구성요소입니다. 또한 컨트롤 플레인에서 노드에 작업을 요청하는 경우 kubelet이 이 작업을 실행합니다.

 

kube-proxy

클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스 서비스 개념의 구현부입니다. 운영 체제의 패킷 필터링 계층에 의존하거나 트래픽 자체를 전달하여 클러스터 내부 또는 외부의 네트워크 통신을 처리합니다.

 

 

 

참고

https://kubernetes.io/ko/docs/concepts/overview/components/#%EC%BB%A8%ED%8A%B8%EB%A1%A4-%ED%94%8C%EB%A0%88%EC%9D%B8-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8

반응형