Developers Haven

(DH)블로그는 개발자들이 기술 정보를 찾아볼 수 있는 안식처가 되고 싶음을 희망하여 시작하게 되었습니다. 공부한 내용과 성장 과정을 기록해두었으니 편히 둘러보시길 바랍니다.

Welcome to DH's Blog

[기술공부]/Kubernetes

[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (2)

DH’s Blog 2024. 4. 13. 16:40
반응형

 

지난 시간에는 쿠버네티스에 대한 개념과 아키텍처에 대해 알아보았다. 쿠버네티스는 크게 마스터/워커 노드로 구성되어 있으며 지난 시간에는 마스터 노드의 구성과 역할에 대해서 알아보았다. 이번 시간에는 워커 노드에 대해서 자세히 알아보도록 하자.

 

 

[지난 시간 내용]

2024.04.13 - [[기술공부]/Kubernetes] - [k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1)

 

[k8s] 쿠버네티스란? with 쿠버네티스 아키텍처 - (1)

지금까지 가상화 배포에서 컨테이너 배포로 바뀌게 된 배경과, 쿠버네티스가 등장하게 된 배경에 대해 알아보았다. 이번 시간에는 쿠버네티스의 개념과 아키텍처에 대해 알아보도록 하자. [지

developers-haven.tistory.com

 

 

 


 

1. k8s(쿠버네티스)란?

 

k8s는 컨테이너 런타임(Container Runtime, 컨테이너 실행 엔진)을 통해 컨테이너를 다루는 도구 중 하나이다. 노드에 컨테이너를 분산 배치하거나, 오류가 생긴 컨테이너를 교체하는 것 같은 일을 통해 컨테이너를 관리해준다. 그리고 k8s는 선언형 인터페이스를 사용하여 클러스터 상태를 계속 체크하면서 선언된 상태가 되도록 조치를 취하게 된다.

 

(참고) 명령형 인터페이스와 선언형 인터페이스의 차이
1. 명령형 인터페이스(CLI, Command-Line Interface) - 사용자가 직접 명령을 내리고 실행하며, 각 단계 및 세부사항을 명시해줘야 한다.
2. 선언형 인터페이스(Declarative Interface) - 사용자는 원하는 최종 상태만을 선언하고, 시스템은 해당 상태를 달성하기 위해 작업을 자동으로 처리해준다.

 

 

 

 

 

2. k8s 아키텍처

Worker Node 구성도

 

(1) Kube-proxy

  • 각 워커 노드에서 구동되는 네트워크 proxy 서버로 k8s 내부 네트워크 트래픽 관리
  • 워커 노드의 네트워크 규칙을 유지 및 관리하며 클러스터 내외부 통신을 가능하게 만듦
구조: 1개의 워커 노드 1개 이상의 pod  각 pod 안에는 1개 이상의 컨테이너

워커 노드마다 Kube-proxy를 가지고 있고, 해당 워커 노드 내에는 1개 이상의 pod가 배치될 수 있다. 그리고 각 pod는 저마다 고유한 IP 주소를 가지게 되고 동일 pod 내의 컨테이너들은 해당 pod의 IP를 같이 공유한다. 이때, Kube-proxy를 통해 서로 다른 워커 노드에 있는 pod간의 통신이 이루어진다.

+----------------------------------------------------------------------------+
|                              워커 노드 (Worker Node)                         |
|                              (IP: 192.168.0.10)                            |
|                              +------------------+                          |
|                              |    kube-proxy    |                          |
|                              +------------------+                          |
|                                       |                                    |
|                                       v                                    |
|                                                                            |
|       +---------------------------+      +---------------------------+     |
|       |            파드            |      |            파드            |     |
|       |    (Pod - IP: 10.1.0.2)   |      |    (Pod - IP: 10.1.0.3)   |     |
|       |     +-----------------+   |      |     +-----------------+   |     |
|       |     | 컨테이너 1        |   |      |     | 컨테이너 1        |   |      |
|       |     | (IP: 10.1.0.2)  |   |      |     | (IP: 10.1.0.3)  |   |     |
|       |     | Port: 8080      |   |      |     | Port: 8080      |   |     |
|       |     +-----------------+   |      |     +-----------------+   |     |
|       |     | 컨테이너 2        |   |      |     | 컨테이너 2        |   |      |
|       |     | (IP: 10.1.0.2)  |   |      |     | (IP: 10.1.0.3)  |   |     |
|       |     | Port: 8081      |   |      |     | Port: 8081      |   |     |
|       |     +-----------------+   |      |     +-----------------+   |     |
|       +---------------------------+      +---------------------------+     |
+----------------------------------------------------------------------------+​

 

 

 

 

(2) Kubelet

  • 마스터 노드의 Kube-API-Server와 통신하며 서버를 통해 들어오는 신호 모니터링
  • pod 상태를 유지 및 관리(생명주기 관리)하여 pod에서 컨테이너가 정상 동작하도록 관리
  • 쉽게 생각하면 노드의 심장처럼 모니터링하고 관리하는 역할과 같음
Kubelet 기능

(1) pod 관리
: 마스터 노드로 부터 할당된 pod를 워커 노드에 배치하고 실행하는 역할 → pod 상태를 주기적으로 모니터링하고 관리하며 안정성을 유지

(2) Container 실행

: pod에 정의된 컨테이너를 실행하고 관리하는 역할 컨테이너 런타임(ex. Docker, Containerd)을 사용하여 컨테이너를 시작하고 중지시킴

(3) 리소스 모니터링

: 워커 노드의 리소스 사용량을 모니터링하며 클러스터 상태 파악 이러한 정보가 마스터 노드의 Kube-API-Server에 전달되어 ‘스케줄링’에 사용됨

(4) 상태(이벤트) 보고

: 마스터 노드의 Kube-API-Server에 주기적으로 노드와 파드 상태 보고

(5) 노드 자동 복구

: 워커 노드가 비정상적으로 종료되면 자동으로 복구 시도 노드 장애 시 클러스터 안정성 보장 가능

 

 

 

 

(3) Container Runtime Engine

  • 워커 노드에서 컨테이너 실행을 담당하는 S/W (ex. Docker)
  • 컨테이너 이미지를 가져오고 구동시키는 엔진 역할

 

 

 

 


 

두 번의 시간에 걸쳐, 쿠버네티스의 전체적인 아키텍처마스터/워커 노드의 구성과 역할에 대해서 알아보았다. 쿠버네티스를 처음 접한다면 아키텍처를 먼저 이해하는 것이 가장 중요하다고 할 수 있다. 이제 아키텍처를 이해했다면 그 다음으로 쿠버네티스의 오브젝트에 대해서 알아보도록 하자. 오늘도 이 내용이 많은 사람들에게 도움이 되었으면 좋겠다:)

 

반응형