Kubernetes의 클러스터에는 아래와 같이 여러 개의 구성 요소가 있습니다.
Control Plane 이라 불리는 Matser Node와 Data Plane 이라 불리는 Work Node 가 존재합니다.
Control Plane
클러스터 전체를 관리하고 조정하는 중앙 컴포넌트 집합입니다. Control Plane은 클러스터의 상태를 유지하고, 작업을 예약하며, 클러스터의 일관성과 안정성을 보장합니다. 주요 구성 요소는 다음과 같습니다:
- kube-api-server:
- Kubernetes API 서버로, 클러스터의 API 요청을 처리합니다.
- 사용자, CLI 툴, 그리고 다른 Kubernetes 컴포넌트와의 모든 통신을 처리합니다.
- 클라이언트가 클러스터와 상호 작용할 수 있도록 RESTful API를 제공합니다.
- etcd:
- 모든 클러스터 데이터를 저장하는 key-value 데이터 저장소입니다.
- 고가용성 및 일관성을 보장하는 분산 데이터 저장소로 설계되었습니다.
- 모든 상태 정보(예: 노드 상태, Pod 상태 등)를 저장하며, Control Plane의 다른 컴포넌트들이 이를 참조합니다.
- kube-scheduler:
- 새로 생성된 Pod가 실행될 적절한 노드를 결정합니다.
- 리소스 요구사항, 정책 제한, 노드 상태 등에 따라 스케쥴링을 실행합니다.
- controller-manager:
- 여러 컨트롤러를 실행하는 프로세스입니다.
- 각 컨트롤러는 클러스터의 상태를 원하는 상태로 유지하기 위한 작업을 수행합니다.
- 주요 컨트롤러는 다음과 같습니다.
- Node Controller
- Replication Controller
- Endpoint Controller
- cloud-controller-manager:
- 클라우드 공급자와의 상호 작용을 담당하는 컨트롤러입니다.
- 클러스터를 다양한 클라우드 환경에서 원활하게 실행할 수 있도록 지원합니다.
- 주요 컨트롤러는 다음과 같습니다.
- Node Controller
- Route Controller
- Service Controller
DATA PLANE
Kubernetes에서 노드(Node)는 워커 머신으로, 클러스터 환경에 따라 VM 혹은 물리적 머신 일도 있습니다. 각 노드는 pod을 실행하기 위한 필수 서비스를 제공하며, Control Plane에 의해 관리됩니다.
노드의 주요 구성 요소
- kubelet:
- 각 노드에서 실행되는 에이전트로, PodSpec에 명시된 컨테이너들이 실행되고 있는지, 그리고 그 상태가 정상인지 확인합니다.
- Kube API와 통신하며, 해당 노드에 할당된 pod를 관리합니다.
- kube-proxy:
- 각 노드에서 실행되는 네트워크 프록시로, 네트워크 규칙을 유지합니다. 이러한 규칙은 클러스터 내외부의 네트워크 세션에서 pod와의 통신을 가능하게 합니다. (예: 웹 서버와 DB의 연결)
네트워크 플러그인
클러스터 내에서 컨테이너 네트워킹을 설정하고 관리하는 데 사용됩니다. 네트워크 플러그인은 Kubernetes 네트워킹 모델을 구현하여 각 pod가 고유한 IP 주소를 가지며, 모든 pod가 클러스터 내에서 서로 통신할 수 있도록 합니다.
| Ref. |
'IT > kubernates' 카테고리의 다른 글
Pod (0) | 2024.05.21 |
---|---|
Node (0) | 2024.05.20 |
Control Plane (0) | 2024.05.17 |
Kubernetes (0) | 2024.05.16 |
WSL2 Ubuntu 환경에서 Docker Desktop 설치 하지 않고 Minikube 설치 및 IntelliJ Kubernetes 플러그인 연동 방법 (0) | 2023.07.26 |
댓글