워커 노드에서 실행되는 컨테이너를 관리하는 마스터 노드,
실제로 동작되는 서버에 해당되는 워커 노드, 이를 합쳐서 구성된 시스템이 클러스터
컨테이너와 볼륨을 묶은 게 파드고,
파드를 모은 것이 서비스고(워커 노드 내 통신 배분),
파드의 수를 관리하는 게 레플리카 세트
요청 측면에서
먼저 가장 바깥에 위치해 각 통신을 워커 노드들에게 분배해주는 놈이 로드밸런서,
로드밸런서에게 분배된 통신을 워커 노드 내에서 다시 분배해주는 게 서비스
< 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를 사용하여 특정 레이블을 가진 파드의 집합을 관리한다.
'docker' 카테고리의 다른 글
[docker] 네트워킹 심화: DNS부터 볼륨 관리까지 (0) | 2024.08.12 |
---|---|
[docker] 네트워킹 기본 _bridge, host, overlay (0) | 2024.08.12 |
[docker] 컨테이너간 통신 이해 (0) | 2024.08.12 |
[docker] 컨테이너 볼륨 백업 (1) | 2024.07.24 |
[docker] 오라클 컨테이너 백업하고 바인드 마운트하기 1_실패 (0) | 2024.06.09 |