Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.
K8s 메트릭 API(Metrics API) 는 자동 스케일링 및 비슷한 사용 사례를 지원하기 위한 기본적인 메트릭 집합을 제공한다. 이 API를 사용해 노드와 파드의 CPU 및 메모리 사용량을 쉽게 쿼리할 수 있다. ([kubectl top](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#top)
명령어 사용)
HorizontalPodAutoscaler(HPA) 와 VerticalPodAutoscaler(VPA)를 사용하는 경우,
워크로드 레플리카와 리소스를 조정하기 위해 메트릭 API의 데이터가 이용된다.
구조
- cAdvisor: kubelet에 포함된 컨테이너 메트릭을 수집, 집계, 노출하는 데몬
- kubelet: 컨테이너 리소스 관리를 위한 노드 에이전트.
- 리소스 메트릭은 kubelet API 엔드포인트
/metrics/resource
및/stats
를 사용하여 접근 가능하다.
- 리소스 메트릭은 kubelet API 엔드포인트
- 요약 API:
/stats
엔드포인트를 통해 사용할 수 있는 노드 별 요약된 정보를 탐색 및 수집할 수 있도록 kubelet이 제공하는 API - metrics-server: 각 kubelet으로부터 수집한 리소스 메트릭을 수집 및 집계하는 클러스터 애드온 구성 요소.
API 서버는 HPA, VPA 및
kubectl top
명령어가 사용할 수 있도록 메트릭 API를 제공한다.- metrics-server는 메트릭 API에 대한 기준 구현(reference implementation) 중 하나이다.
- 메트릭 API: 워크로드 오토스케일링에 사용되는 CPU 및 메모리 정보로의 접근을 지원하는 쿠버네티스 API.
- 이를 클러스터에서 사용하려면, 메트릭 API를 제공하는 API 확장(extension) 서버가 필요하다.
설치
아래 명령어로 메트릭 API를 제공하는 metrics-server(API 확장 서버)를 설치할 수 있다.
예시
-
[kubectl top](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#top)
명령어를 사용하여 여러 정보를 조회할 수 있다. -
node별 CPU, memory 사용량 조회
-
Pod별 CPU, memory 사용량 조회