쿠버네티스
쿠버네티스 개념 정리 - 1
코딩질문자
2024. 12. 7. 17:49
728x90
쿠버네티스(Kubernetes)의 주요 구성 요소는 각각의 역할을 통해 클러스터의 상태를 관리하고 워크로드를 실행하는 데 필수적인 기능을 수행합니다. 아래에 각 구성 요소의 역할을 설명합니다.
1. etcd
- 역할:
- 쿠버네티스 클러스터의 키-값 저장소.
- 모든 클러스터 데이터를 저장하며, 클러스터의 상태와 설정 정보를 관리.
- 특징:
- 분산형 고가용성 데이터 저장소.
- 클러스터 구성, 시크릿, 컨피그맵 등과 같은 모든 상태 데이터가 저장됨.
- 사용 예:
- 클러스터 복구 시 필요한 데이터를 제공.
- API 서버가 상태 정보를 읽고 쓰는 데 사용.
2. kube-scheduler
- 역할:
- 새롭게 생성된 Pod를 적절한 **노드(Node)**에 스케줄링.
- 특징:
- 리소스 요구사항(CPU, 메모리), 노드의 리소스 사용량, 태인트 및 톨러레이션, affinity/anti-affinity 규칙 등을 고려하여 스케줄링.
- 작동 방식:
- Pending 상태의 Pod를 탐색.
- Pod를 실행할 수 있는 최적의 노드를 선택.
- 선택된 노드에 Pod를 할당.
3. node-controller
- 역할:
- 노드의 상태를 관리하고 모니터링.
- 특징:
- 노드의 등록 및 삭제를 처리.
- 일정 시간 동안 노드에서 응답이 없으면 해당 노드를 비정상 상태로 표시.
- 노드 상태에 따라 Pod를 재스케줄링하거나 다른 노드로 이동.
4. replication-controller
- 역할:
- 특정 Pod가 지정된 개수만큼 항상 실행되도록 보장.
- 특징:
- Pod의 수를 모니터링하고, 부족하면 새로 생성하거나, 초과하면 삭제.
- ReplicaSet이 ReplicationController의 발전된 버전으로 사용됨.
- 사용 예:
- 웹 서버 Pod가 항상 3개 이상 실행되도록 보장.
5. controller-manager
- 역할:
- 다양한 컨트롤러(리소스를 관리하는 로직)를 실행하고 관리.
- 특징:
- node-controller, replication-controller, endpoint-controller, service-account-controller 등 여러 컨트롤러가 이 구성 요소에 포함.
- 모든 컨트롤러가 단일 바이너리로 실행.
- 예시 컨트롤러:
- Replication Controller: Pod 개수를 관리.
- Node Controller: 노드 상태를 관리.
- Endpoint Controller: 서비스와 Pod 간의 연결 정보를 관리.
6. kube-apiserver
- 역할:
- 쿠버네티스 클러스터의 중앙 통신 허브.
- 사용자, 클러스터 내부 컴포넌트, 외부 시스템이 클러스터와 상호작용하는 API를 제공.
- 특징:
- 모든 요청을 인증하고 승인한 뒤 etcd와 통신하여 상태를 업데이트.
- 클라이언트가 kubectl 명령어를 통해 요청을 보내는 대상.
- 핵심 기능:
- REST API를 통해 클러스터 상태를 읽고 쓰는 인터페이스 제공.
7. kubelet
- 역할:
- 각 노드에서 실행되며, API 서버로부터 Pod 스펙을 받아 Pod를 실행하고 상태를 관리.
- 특징:
- 컨테이너 런타임(Docker, containerd 등)을 사용하여 컨테이너를 시작 및 중지.
- Pod 상태를 주기적으로 API 서버에 보고.
- 사용 예:
- 새로운 Pod를 생성하고, 컨테이너 상태를 감시.
8. kube-proxy
- 역할:
- 클러스터 내부의 네트워킹을 관리하고, 서비스의 트래픽을 올바른 Pod로 라우팅.
- 특징:
- 각 노드에 실행되며, 네트워크 규칙(IPTables 또는 IPVS 기반)을 생성.
- 클러스터 외부에서 들어오는 요청을 서비스의 올바른 엔드포인트로 전달.
- 사용 예:
- 서비스(ClusterIP)로 요청이 들어오면 이를 해당 서비스에 연결된 Pod로 라우팅.
요약
컴포넌트역할특징
etcd | 클러스터 상태 데이터 저장 | 키-값 데이터 저장소, 고가용성. |
kube-scheduler | Pod를 적절한 노드에 스케줄링 | 리소스 요구사항과 규칙 기반 스케줄링. |
node-controller | 노드 상태 관리 및 모니터링 | 노드 등록/삭제 처리, Pod 재스케줄링. |
replication-controller | Pod 수 보장 | Pod 생성/삭제를 통해 안정된 상태 유지. |
controller-manager | 다양한 컨트롤러 실행 및 관리 | 복합적인 리소스 관리 기능 포함. |
kube-apiserver | 클러스터의 중앙 API 허브 | 클라이언트와 내부 컴포넌트 간의 통신 중재. |
kubelet | 각 노드에서 Pod 실행 및 관리 | 컨테이너 상태 보고 및 실행 관리. |
kube-proxy | 네트워크 라우팅 관리 | 서비스와 Pod 간의 트래픽 라우팅. |
이 구성 요소들은 서로 협력하여 쿠버네티스 클러스터를 안정적이고 효율적으로 관리하는 데 핵심적인 역할을 수행합니다.
728x90