[Kubernetes] 쿠버네티스 클러스터

곽우현·2022년 6월 25일
0

Kubernetes

목록 보기
2/5
post-thumbnail

쿠버네티스 클러스터(컴포넌트)

  • 마스터 노드 (Control Plane Component)
  • 워커 노드 (Node Components)

쿠버네티스 클러스터는 마스터 노드워커 노드로 구분된다.

마스터 노드 (Control Plane Component)

마스터 노드는 클러스터에 관한 전반적인 결정을 수행하고, 클러스터 이벤트를 감지하고 반응한다. 전체적인 제어/관리를 하기 위한 관리 서버이다. 마스터 노느드는 클러스터 내 어떠한 머신에서든지 동작할 수 있다.

마스터 노드의 컴포넌트 (구성요소)

kube-apiserver

kube-apiserver는 쿠버네티스 클러스터로 들어오는 모든 요청을 가장 앞에서 접수하는 역할을 한다. 공식 문서에서 쿠버네티스 컨트롤 플레인의 프론트 엔드라고 표현한다. 예를 들어 쿠버네티스 커맨드 라인 도구인 kubectl을 사용하여 각종 명령을 수행할 경우, 이 명령은 kube-apiserver로 전송된다. kube-apiserver는 이 요청을 처리 흐름에 따라 적절한 컴포넌트로 전달한다.

etcd

쿠버네티스 클러스터가 동작하기 위해서는 클러스터 및 리소스의 구성 정보, 상태 정보, 명세 정보 등이 필요하다. etcd는 이를 key-value 형태로 저장하는 저장소이다. 모든 클러스터 데이터(상태)를 담는 쿠버네티스 뒷단의 저장소로 사용된다.

kube-scheduler

쿠버네티스는 파드를 생성하면 각 노드에 자동으로 알아서 파드를 배포한다. 이때 kube-scheduler는 이를 감지하여 어떤 노드로 배치할지 결정하는 일을한다.

kube-controller-manager

노드가 다운되었을 때의 대응, 파드의 복제(Replicas) 유지, 서비스와 파드 연결, 네임스페이스에 대한 기본 계정과 토큰이 생성되어 있는지에 대한 확인을 해주는 역할을 하는 컴포넌트이다.

cloud-controller-manager

클라우드별 컨트롤 로직을 포함하는 컴포넌트이다. cloud-controller-manager를 통해 클러스터를 클라우드 공급자의 API에 연결한다. 자신의 사내, PC 내부의 학습 환경에서 쿠버네티스를 실행 중인 경우 클러스터에는 cloud-controller-manager가 없다.

워커 노드의 컴포넌트 (구성요소)

파드가 실행되는 노드

kubelet

노드에서 컨테이너가 동작하도록 관리해 주는 핵심 요소이다. 각 노드에서 파드를 생성하고 정상적으로 동작하는지 관리하는 역할을 담당하고 있으며, 실제로 우리가 쿠버네티스의 워크로드를 관리하기 위해 내려지는 명령은 kubelet을 통해 수행된다고 볼 수 있다. 우리가 쿠버네티스 파드를 관리하기 위해 작성하는 YAML을 쿠버네티스 클러스터에 적용하기 위해 kubectl 명령어를 사용하는데, 이 YAML이 kube-apiserver로 전송된 후 kubelet으로 전달된다. kubelet은 YAML을 통해 전달된 파드를 생성, 변경하고 컨테이너가 정상적으로 실행되고 있는지 확인한다.

kube-proxy

클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스의 서비스 개념의 구현부이다. kube-proxy는 노드의 네트워크 규칙을 유지 관리한다. 이 네트워크 규칙이 내부 네트워크 세션이나 클러스터 밖에서 파드로 네트워크 통신을 할 수 있도록 해준다.

container runtime

파드에 포함된 컨테이너 실행을 실질적으로 담당하는 소프트웨어를 의미한다. 쿠버네티스는 containerd와 같은 컨테이너 런타임 및 모든 CIR 구현체를 지원한다.

profile
주니어 Java 개발자

0개의 댓글