피드로 돌아가기
Dev.toInfrastructure
원문 읽기
cAdvisor에서 CRI 기반 Metrics 수집으로의 아키텍처 전환 및 효율화
Kubelet Metrics: How cAdvisor and CRI Collect Kubernetes Stats
AI 요약
Context
기존 Kubernetes는 Kubelet 내장 cAdvisor를 통해 Linux cgroup 파일시스템에서 직접 메트릭을 추출하는 구조를 채택함. 하지만 런타임 다변화와 cgroup v2 도입에 따라 런타임 수준에서 표준화된 메트릭 수집 체계의 필요성이 증대됨.
Technical Solution
- Linux kernel cgroups 기반의 자원 할당 및 제한 정보를 /sys/fs/cgroup/ 가상 파일시스템에서 읽어오는 로우 레벨 수집 구조 설계
- Kubelet 내부에 cAdvisor를 임베딩하여 노드, 포드, 컨테이너, 볼륨 통계를 통합 수집하고 HTTP 엔드포인트로 노출하는 파이프라인 구축
- gRPC 기반의 CRI 표준 API를 통한 런타임 직접 통신 방식으로 PodAndContainerStatsFromCRI 기능 구현
- cgroup v2 환경에서 일관된 자원 계층 관리를 위해 systemd cgroup driver를 통한 통합 리소스 트리 구조 채택
- /metrics/resource 엔드포인트를 신설하여 Metrics Server 0.6.x 이상 버전의 쿼리 효율성을 높인 경량화된 CPU/Memory 메트릭 제공
실천 포인트
- cgroup v2 환경 구축 시 Kubelet과 Container Runtime 모두 systemd driver를 사용하도록 설정 일치 여부 확인 - Metrics Server 최신 버전 사용 시 /stats/summary 대신 /metrics/resource 엔드포인트를 통한 경량 메트릭 수집 여부 검토 - PodAndContainerStatsFromCRI 기능 활성화를 통해 cAdvisor 의존도를 낮추고 CRI 런타임 직접 수집으로의 전환 가능성 분석