꾸준히 오래오래

데이터 엔지니어의 공부 곳간✏️

Data/Kubernetes

[Kubernetes] 쿠버네티스 컴포넌트

zzi_yun 2024. 3. 10. 14:10

쿠버네티스 컴포넌트는,

쿠버네티스 클러스터를 구성하는 핵심 프로세스나 구성 요소로 크게 컨트롤 플레인 컴포넌트, 노드 컴포넌트, 애드온이 있다.

컨트롤 플레인 컴포넌트

컨트롤 플레인은 클러스터에 관한 전반적인 결정(ex: 스케줄링)을 수행하고 클러스터 이벤트 감지하고 반응한다. 일종의 두뇌역할

kube-apiserver

k8s API를 노출하는 컴포넌트, 컨트롤플레인의 프런트엔드이다.

etcd

모든 클러스터 데이터를 담는 저장하는 분산형 키- 값 저장소이다.

kube-scheduler

새로운 파드의 배치를 결정한다. 어피니티 등을 고려한다.

kube-controller-manager

다양한 리소스 컨트롤러들을 실행하며, 클러스터의 상태를 지속적으로 감시하고 조정한다.

API 서버를 통해서 클러스터의 공유 상태를 감시한다.

의도한 상태에 가깝게 만든다.

 

노드 컴포넌트

노드는 가상 혹은 물리적 머신을 의미한다.

kubelet

각 노드에서 실행되는 에이전트로 노드에서 컨테이너가 동작하도록 관리한다.

실제 우리가 k8s 워크로드 관리를 위해 내린 명령은 kubelet으로 가게 된다.

yaml 작성 → kubectl → kube-apiserver → kubelet → 파드 생성 및 변경

kube-proxy

각 노드에서 실행되는 네트워크 프록시로 서비스 디스커버리와 로드밸런싱을 처리한다.

쿠버네티스 파드의 경우 IP가 계속 변한다. 그렇면 어떻게 접근할 수 있을까

kube-proxy가 파드에 접근할 수 있는 방법을 관리 및 갱신하여 이 정보를 통해 외부에서 파드로 접근할 수 있게 된다.

container runtime

파드에 포함된 컨테이너 실행을 실질적으로 담당한다.

containerd, CRI-O와 같은 컨테이너 런타임 및 모든 k8s CRI 구현체 지원한다.

CRI는 쿠버네티스가 컨테이너를 제어하기 위해 제공하는 표준 규악을 의미한다.

 

애드온 컴포넌트

 

k8s cluster의 추가 기능 구현 및 기능 확장을 위해 사용하는 컴포넌트이다.

 

사용하는 namespace는 kube-system 쿠버네티스 리소스(데몬 셋, 디플로이먼트)를 이용하여 클러스터 기능을 구현한다.

(해당 리소스에 의해 관리되는 pod를 사용)

대표적으로

  1. DNS : 애드온이지만 거의 필수에 가까운 애드온 컴포넌트로, k8s 서비스를 위해 dns 레코드를 제공해 주는 dns 서버이다.
  2. 컨테이너 리소스 모니터링: 컨테이너들에 대한 포괄적인 시계열 메트릭 및 ui 제공
    1. Prometheus, Grafana

 

[참고 자료]

쿠버네티스 공식 문서

- https://kubernetes.io/ko/docs/concepts/overview/components/

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

 

삼성 sds

https://www.samsungsds.com/kr/insights/kubernetes-3.html

 

쿠버네티스 알아보기 3편: 쿠버네티스를 이루고 있는 여러 가지 구성 요소 | 인사이트리포트 | 삼

쿠버네티스 구성 요소인 쿠버네티스 컴포넌트에 대해 살펴보겠습니다.

www.samsungsds.com