[Kubernetes] 쿠버네티스의 구성 요소와 동작 원리

2021. 11. 16. 09:44Kubernetes/Kubernetes_Service

반응형

안녕하세요, 달콤한달팽이입니다.🐌🙂

 

지난 시간에 이어 쿠버네티스가 어떻게 구성되어있고, 어떻게 동작하는지에 대해 알아보도록 하겠습니다!


쿠버네티스(Kubernetes) 구성요소

쿠버네티스를 사용하기 위해선, 쿠버네티스가 어떻게 동작하는지 그 동작 원리를 아는 시간이 필요해보입니다.

 

아래는 쿠버네티스 공식 홈페이지에서 제공하는 쿠버네티스의 구성도입니다.

 

위 그림을 통해 자세히는 알 수 없지만 쿠버네티스는 클러스터로 구성되어 있으며,

컨트롤 플레인(Control Plain)워커 노드(Worker Node)로 구성되어 있다는 것을 알 수 있습니다.

 

그리고 컨트롤 플레인은 API, etcd, scheduler, controller-manager, cloud-controller-manager로 구성되고,

워커 노드는 kubelet과 kube-proxy로 구성되어 있는것으로 보입니다.

 

그럼 이제 각각의 자세한 역할에 대하여 알아봅시다!

 


컨트롤 플레인(Control Plain)

컨트롤 플레인은 클러스터에 대한 거의 모든 결정을 수행합니다.

 

즉, Pod의 이상사항을 구분하고 이에 따라 새로운 Pod을 구동하는 등의 관리자 역할을 수행합니다.

(Pod이 무엇인지는 추후 다룰 예정입니다!)

 

컨트롤 플레인은 크게 5가지 컴포넌트로 구성되어 있습니다.

 

1) API Server

API Server는 API 요청을 처리하고 유효성을 검사하며 etcd에 해당 개체를 업데이트합니다.

 

클러스터의 상태를 관리하고, 컨트롤 플레인의 일관성, 보안, 안정성을 유지합니다.

 

 

2) etcd

etcd는 클러스터의 모든 데이터가 담겨있는 저장소 입니다.

 

key-value 형태로 구성되어 있으며, 배포된 애플리케이션의 현재 상태, 원하는 상태, 메타데이터 등을 저장합니다.


사용자가 특정 정보를 얻고자 할때, API Server가 요청을 받아 etcd에서 필요한 정보를 가져와 응답을 전달합니다.

 

 

3) Scheduler

Scheduler는 새로 생성되거나 예약되지 않은 Pod가 위치할 노드를 찾아줍니다.

 

가장 효율적인 Pod의 위치를 찾아주어 클러스터 내부 리소스 활용의 효율성을 높혀줍니다.

 

4) Controller-Manager

Controller-Manager는 클러스터가 원하는 상태를 유지관리하 것을 도와줍니다.

 

쿠버네티스에 존재하는 여러 Controller를 관리하며, Node Controller, Job Controller 등이 존재합니다.

 

이중 쿠버네티스의 상태를 지속적으로 모니터링하고, 이벤트에 반응함으로써 클러스터가 오류 및 이상현상에 대해 대처할 수 있도록 도와는 역할 등이 포함되어 있습니다.

 

5) Cloud-Controller-Manager

Cloud-Controller-Manager는 클러스터를 클라우드 플랫폼에 맞게 API 연결을 수행합니다.

 


워커 노드(Workder Node)

워커 노드는 동작 중인 Pod를 유지시키고, 실질적인 작업을 담당합니다.

 

워커 노드는 크게 3가지 컴포넌트로 구성되어 있습니다.

 

1) kubelet

kubelet은 각 노드마다있는 agent이며 대표입니다.

 

때문에 클러스터에 노드를 등록하고, Pod을 생성하며, 노드의 상태를 지속적으로 모니터링하여 컨트롤 플레인의 API Server로 전달하는 역할을 수행합니다.

 

2) kube-proxy

kube-proxy는 노드의 네트워크 규칙을 유지 관리합니다.

 

이를 통해 클러스터 내부, 외부와의 네트워크 통신을 진행할 수 있게됩니다.

 

3) 컨테이너 런타임

컨테이너 런타임은 실제 컨테이너를 생성하는 역할을 수행하는 소프트웨어입니다.

 

kubelet이 Pod 생성을 요청할 경우, 해당 Pod의 컨테이너들이 컨테이너 런타임에 의해 실행됩니다.

 


이제 구성요소를 파악하였으니, 이에대한 동작 방식에 대하여 알아보도록 합시다.

 

쿠버네티스의 동작 원리

1) 클라이언트의 명령 요청

클라이언트는 kubectl 명령어를 통해 쿠버네티스 클러스터에,

그중에서도 컨트롤 플레인의 API Server에 요청을 전달합니다.

 

2) etcd에 API 내용 저장

명령어를 전달받은 API Server는 이를 곧바로 수행하지 않고, etcd에 해당 내용을 저장합니다.

 

3) Controller 작동

etcd를 감시하고 있던 Controller는 자신이 담당하는 리소스에 대한 요청이 온 것을 확인하고,

이를 Scheduler에게 동작을 요청합니다.

 

4) Scheduler 작동

Scheduler는 요청을 받아들여 워커 노드의 kubelet과 통신하여, 명령을 내립니다.

 

5) kubelet 동작

명령을 전달받은 kubelet은 전달받은 명령을 수행합니다.


지금까지 쿠버네티스의 구성 요소와 동작 원리에 대하여 알아보았습니다.

 

다음부터는 실제로 쿠버네티스를 구성해보고, 이를 사용해보는 실습을 진행해보겠습니다!

 

감사합니다.

반응형