kube-apiserver
kube-scheduler
kube-controller-manager
이 세 가지 컴포넌트는 Kubernetes 클러스터의 관리 및 오케스트레이션을 담당하는 주요 역할을 함.
kube-apiserver
- Kubernetes의 API 서버 역할을 하며, 클러스터의 모든 요청을 처리하는 중앙 관리 지점
- kubectl 명령이나 다른 클러스터 내 외부 시스템에서 들어오는 요청을 처리
- 기능:
- 클러스터와 외부 시스템 간의 커뮤니케이션을 담당
- API 엔드포인트를 제공하고, 클러스터 상태에 대한 데이터를 JSON 형식으로 응답
- 모든 Kubernetes 클러스터 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 처리
- 운영 방식: API 서버는 RESTful API를 통해 외부 요청을 처리하고, 클러스터 내부와 외부 간의 통신을 관리
- 통신 방식: 다른 컴포넌트들과 통신할 때 etcd와 연동하여 데이터를 저장하고, 클러스터의 상태를 관리
- 기능:
kube-scheduler
- 파드(Pod)를 적절한 노드(Node)에 배치하는 역할을 담당하는 컴포넌트
- 각 파드는 클러스터 내에서 실행할 노드를 지정하지 않으며, 스케줄러가 최적의 노드를 결정하여 파드를 배치
- 기능:
- 클러스터 내에서 파드를 실행할 노드를 선택
- 노드의 리소스 상태(CPU, 메모리, etc.)와 파드의 요구 사항을 고려하여 최적의 노드에 파드를 할당
- Affinity(친화성), Taints와 Tolerations와 같은 정책을 고려하여 파드를 배치할 노드를 결정
- PodPriority 및 ResourceRequests/Limits 등을 기반으로 배치 우선순위를 관리
- 운영 방식: 파드의 요구 사항(예: 리소스, 노드 특성 등)을 바탕으로 가능한 노드를 선택하고, 그 노드에 파드를 배치하도록 kube-apiserver에 요청 전송
- 기능:
kube-controller-manager
- 클러스터의 상태를 관리하고, 클러스터 상태가 지정된 목표 상태와 일치하도록 하는 컨트롤러들의 집합을 관리하는 컴포넌트입니다. 이 컴포넌트는 지속적으로 클러스터 리소스의 상태를 감시하고, 목표 상태를 달성하기 위해 필요한 작업을 수행합니다.
- 기능:
- ReplicationController, Deployment, Job, CronJob 등과 같은 여러 컨트롤러들을 실행하여 리소스의 상태를 관리합니다.
- 클러스터의 상태를 계속 감시하며, 필요시 Pod를 추가하거나 삭제하고, ReplicaSet을 관리하거나, Job을 실행하는 등 상태 변경을 수행합니다.
- Namespace나 ServiceAccount 같은 리소스들의 관리를 담당하며, 리소스의 상태를 원하는 상태로 만드는 일을 합니다.
- 운영 방식: kube-controller-manager는 다양한 컨트롤러를 실행하는 단일 프로세스로, 각 컨트롤러는 특정 리소스의 상태를 감시하고 필요한 조치를 취합니다.
- 기능:
- kube-apiserver : 외부 및 내부에서 발생하는 모든 요청을 받아서 처리하고, 그 결과를 etcd에 저장
- kube-scheduler :파드가 실행될 적합한 노드를 결정하고 배치
- kube-controller-manager : 파드, 서비스, 디플로이먼트 등 다양한 Kubernetes 리소스를 관리하고, 클러스터가 항상 원하는 상태를 유지하도록
반응형
'Chapter01 > Kubernetes' 카테고리의 다른 글
[ Kubernetes ] 자주 쓰는 명령어 (0) | 2025.02.25 |
---|---|
[ Kubernetes ]MetalLB와 Ingress 사용해 배포하기 (0) | 2024.09.30 |
[ Kubernetes ] MetalLB와 Ingress를 사용해 외부에서 접근 가능한 인프라 구축 (0) | 2024.09.30 |
[ Kubernetes ] .yaml로 Nginx Pod을 K8S cluster에 배포하기 (0) | 2024.09.03 |
[ Kubernetes ] 설치하기 (0) | 2024.08.26 |