docker

쿠버네티스 오버뷰

99duuk 2024. 6. 17. 15:29

 

워커 노드에서 실행되는 컨테이너를 관리하는 마스터 노드,

실제로 동작되는 서버에 해당되는 워커 노드, 이를 합쳐서 구성된 시스템이 클러스터

 

컨테이너와 볼륨을 묶은 게 파드고,

파드를 모은 것이 서비스고(워커 노드 내 통신 배분),

파드의 수를 관리하는 게 레플리카 세트

 

요청 측면에서

먼저 가장 바깥에 위치해 각 통신을 워커 노드들에게 분배해주는 놈이 로드밸런서,

로드밸런서에게 분배된 통신을 워커 노드 내에서 다시 분배해주는 게 서비스

 


 

 

 

< Kubernetes 구조 >

클러스터: Kubernetes 클러스터는 마스터 노드와 워커 노드로 구성

마스터 노드 (Control Plane): 클러스터를 관리하는 노드
클러스터의 상태를 유지하고, 워커 노드에 작업을 분배

워커 노드 (Worker Node):
컨테이너가 실제로 실행되는 노드
마스터 노드의 지시에 따라 컨테이너를 실행하고 관리

 

 

 


파드 (Pod):
하나 이상의 컨테이너와 그들의 스토리지 리소스를 포함하는 Kubernetes의 가장 작은 배포 단위
파드는 동일한 네트워크 네임스페이스를 공유하며, 동일한 IP 주소와 포트를 가짐

서비스 (Service):
파드의 집합에 대한 네트워크 접근을 제공하는 Kubernetes 리소스
서비스는 파드의 수명 주기와 무관하게 지속되며, 클러스터 내부 또는 외부에서 접근할 수 있는 엔드포인트를 제공

레플리카셋 (ReplicaSet):
특정 개수의 파드를 항상 실행하도록 보장하는 Kubernetes 리소스
파드의 수를 관리하여 고가용성을 제공

디플로이먼트 (Deployment):
레플리카셋을 관리하고 업데이트, 롤백 등을 제공하는 상위 리소스
애플리케이션 배포의 선언적 업데이트를 관리

볼륨 (Volume):
파드 내 컨테이너가 데이터를 저장하고 공유할 수 있는 디렉토리

 




로드밸런서 (LoadBalancer):
외부 트래픽을 클러스터 내부의 서비스로 분배하는 역할
외부에서 접근할 수 있는 IP 주소를 제공

서비스 (Service):
클러스터 내부 또는 외부의 트래픽을 적절한 파드로 라우팅
로드밸런서가 외부에서 들어오는 트래픽을 받아 서비스로 전달하고, 서비스는 이를 해당 파드로 분배

 

 

 

+------------------------------------------------------------+
|                         클러스터                                                                   |
|                                                                                                         |
|  +---------------------------+             +-------------------+  |
|  |   마스터 노드 (Control Plane)     |                  |   워커 노드        |  |
|  |                                  |                                 |  +------------+  |  |
|  |  +-------------------------+  |                 |   |  파드 1       |  |  |
|  |  | kube-apiserver          |  |       |                   |------------|  |  |
|  |  +-------------------------+  |                |  | 컨테이너 1  |  |  |
|  |  | kube-controller-manager |  |              |  |------------|  |  |
|  |  +-------------------------+  |               |  | 컨테이너 2  |  |  |
|  |  | kube-scheduler          |  |       |              +------------+  |  |
|  |  +-------------------------+  |            |  +------------+  |  |
|  |  | etcd                    |  |                                  |  |  파드 2       |  |  |
|  |  +-------------------------+  |              |  |------------|  |  |
|  +---------------------------+  |               |  | 컨테이너 1  |  |  |
|                                                             |       |  +------------+  |
|                                                           |       +-------------------+  |
|                                                                      |  +------------+  |
|  +-------------------------+       |            |  파드 N       |  |
|  |   디플로이먼트 (Deployment)     |            |  |------------|  |
|  |  - 레플리카셋 관리              |       |               | 컨테이너 1  |  |
|  |  - 업데이트 및 롤백 제공        |                     |  +------------+  |
|  +-------------------------+               +-------------------+  |
|                                                            |
|  +-------------------------+            +-------------------+  |
|  |      서비스 (Service)        |                 |  +------------+  |
|  |  - 파드 네트워크 접근 제공   |                  |  |  파드 3       |  |
|  |  - 클러스터 내부/외부 접근  |              |  |------------|  |
|  +-------------------------+             |  | 컨테이너 1  |  |
|                                          |                   |  +------------+  |
|                                          |                                                           |
+------------------------------------ ------------------------+
| 로드밸런서 (LoadBalancer)                                                  |
|  - 외부 트래픽을 서비스로 분배                                             |
+------------------------------------------------------------+

 

 

 

 

 

 

 

로드밸런서는 외부 트래픽과 내부 트래픽 각각을 따로 분배한다.

 파드의 바인딩은 selector,
서버의 바인딩은 targetgroup

으로 처리하기 때문에,

 외부 트래픽은 타겟그룹으로 로드밸런서가 각 파드로 분배하고,
내부 트래픽은 selector로 쿠버네티스가 각 파드로 분배한다. 

 

 

외부 트래픽:

  • 클라우드 제공자의 로드밸런서는 타겟 그룹(Target Group)을 사용하여 외부 트래픽을 내Service로 분배한다(클러스터 내부의 특정 ip와 포트로).
  • Service는 LoadBalancer 타입으로 설정되어, 외부에서 들어오는 트래픽을 클러스터 내부의 파드로 분배한다.

외부 트래픽은 target group을 사용하여 클러스터 내부의 특정 Ip와 포트로 분배한다.

서비스가 타겟 그룹의 엔드 포인트가 된다.

=> 외부 트래픽이 로드밸런서에 도달하면, LB는 target group으로 트래픽을 적절한 서비스로 분배한다.


내부 트래픽은 selector를 사용하여 적절한 파드로 라우팅한다.

서비스는 selector를 사용하여 특정 레이블을 가진 파드의 집합을 관리한다.