-
Kubelet이 Metrics Server로, Metrics Server가 API Server로 데이터를 전송하는 과정kubernetes 2024. 12. 29. 17:05

Kubernetes에서 Kubelet이 Metrics Server로, 그리고 Metrics Server가 API Server로 데이터를 전송하는 과정에서 데이터는 파일에 저장되지 않고 메모리 내에서 처리됩니다. 이는 실시간 모니터링과 효율적인 데이터 전송을 위해 설계된 구조입니다. 아래는 데이터 흐름과 처리 방식에 대한 상세 설명입니다.
1. 데이터 전송 구조
a) Kubelet → Metrics Server
- Kubelet은 각 노드에서 실행되며, /metrics와 /metrics/cadvisor와 같은 HTTP 엔드포인트를 통해 실시간 성능 데이터를 노출합니다.
- 이 엔드포인트는 JSON 또는 Prometheus 형식으로 데이터를 반환하며, Metrics Server는 HTTP 요청을 통해 이 데이터를 주기적으로 수집합니다.
- 데이터는 메모리 내에서 처리되며, 디스크에 저장되지 않습니다.
b) Metrics Server → API Server
- Metrics Server는 Kubelet에서 수집한 데이터를 처리하여 클러스터 전체의 리소스 사용량(CPU, 메모리 등)을 집계합니다.
- 이 집계된 데이터는 Kubernetes API Server의 metrics.k8s.io API를 통해 노출됩니다.
- 예: kubectl top nodes, kubectl top pods 명령어를 통해 조회 가능
- 데이터는 API Server와 Metrics Server 간에 JSON 형식으로 전송되며, 메모리 내에서 처리됩니다.
2. 데이터 저장 방식
Kubelet
- Kubelet은 데이터를 직접 디스크에 저장하지 않습니다. 대신, /metrics 엔드포인트에서 실시간 데이터를 생성하여 제공하며, 이 데이터는 메모리 상에서 관리됩니다.
- /metrics/cadvisor는 cAdvisor에서 수집한 컨테이너 수준의 데이터를 제공합니다.
Metrics Server
- Metrics Server도 데이터를 디스크에 저장하지 않고, 메모리 내에서 처리합니다.
- 수집된 데이터는 일시적으로 메모리에 보관되며, API Server에 요청이 있을 때 처리된 데이터를 반환합니다.
- 이 설계는 경량화를 목표로 하며, 장기적인 데이터 저장 및 분석은 Prometheus와 같은 별도의 도구를 사용하도록 의도되었습니다.
API Server
- Metrics Server가 제공하는 메트릭 데이터는 API Server에 영구적으로 저장되지 않습니다.
- API Server는 단순히 Metrics Server로부터 데이터를 요청할 때마다 제공받아 사용자나 클라이언트로 전달합니다.
3. 데이터가 파일로 저장되지 않는 이유
- 경량화: Metrics Server는 경량 메트릭 수집 도구로 설계되었으며, 장기 데이터를 저장하지 않습니다. 이는 클러스터 리소스 사용을 최소화하기 위함입니다.
- 장기 모니터링 외부화: 장기적인 데이터 저장과 분석은 Prometheus와 같은 모니터링 도구의 역할로 분리되어 있습니다.
- 성능: 메모리 내에서 데이터를 처리함으로써 높은 성능과 낮은 지연 시간을 제공합니다.
4. 장기적인 데이터 저장 및 분석
만약 메트릭 데이터를 장기적으로 저장하거나 분석해야 하는 경우, 다음과 같은 도구를 사용합니다.
a) Prometheus
- 역할: 메트릭 데이터를 장기간 저장하며, 시계열 데이터베이스로 동작
- 동작 방식: Prometheus가 Kubelet 또는 Metrics Server의 /metrics 엔드포인트를 스크랩하여 데이터를 저장
- 저장 위치: Prometheus의 로컬 스토리지 또는 원격 저장소
b) Loki, Elasticsearch
- 역할: 로그 데이터를 저장 및 분석
- Metrics Server 자체 데이터는 저장하지 않지만, Kubernetes 이벤트 또는 클러스터 로그와 결합하여 메트릭 데이터를 간접적으로 활용 가능
5. 요약
- 데이터 저장 위치: Kubelet, Metrics Server, API Server 모두 데이터를 디스크에 저장하지 않고 메모리에서 처리합니다.
- 데이터 형식: JSON 또는 Prometheus 형식으로 전송됩니다.
- 장기 데이터 저장: Prometheus와 같은 외부 도구를 사용해야 합니다.
'kubernetes' 카테고리의 다른 글
Grafana에서 kubelet 메트릭 시각화 예시 (0) 2024.12.30 kubelet 메트릭과 노드 리소스 메트릭에 대한 이해 (0) 2024.12.30 K8s 노드 및 클러스터 리소스 사용량 분석 (0) 2024.12.28 IBM Watsonx 교육 (4) 2024.09.23 Tanzu와 Openshift의 장단점 비교 (6) 2024.09.06