kubernetes의 metrics deep dive - kubelet의 cAdvisor

kubernetes에서 metrics-server와  prometheus는 kubernetes의 어딘가에서 발생하는 메트릭을 수집해서 보여준다.
pod의 CPU 사용량, Memory 사용량 등과 같은 메트릭이 어딘가로 부터 제공해주고, 이를 수집하는 것이다.
이에 대한 정확한 메커니즘을 확인한다.

 

kubelet의 cAdvisor 기능

cAdvisor는 여러가지 리소스를 위해서 Google에서 개발된 모듈이다.

https://github.com/google/cadvisor

해당 모듈이 kubelet에 포함되어 동작한다.

https://github.com/kubernetes/kubernetes/tree/master/pkg/kubelet/cadvisor

kubernetes custom metrics을 사용한 HorizontalPodAutoscaler 구현

Prometheus adapter로 구현한 custom metrics을 통해 HorizontalPodAutoscaler를 구현해본다.

 

prometheus adapter Rule 이해 - Deep Dive
https://blog.encicle.com/prometheus-adapter-rule-ihae-deep-dive

 

위 예제를 진행했다면, traefik의 메트릭에 대해서 아래와 같이 3개의 resource를 분리해서 커스텀 메트릭을 저장하고 있다.

prometheus adapter Rule 이해 - Deep Dive

prometheus adapter의 rule 수정을 통해 다양한 사례를 예제로 살펴보고 깊이 이해하는 섹션을 갖는다.

prometheus-adapter Rule의 Resouce 추가를 통한 API 리소스 분리 예제

traefik_service_requests_total 메트릭은 아래와 같이 code, container, ... , namespace, pod, service, ingress와 같은 라벨이 붙어 있다.

Prometheus에 수집된 메트릭 정보

kubernetes의 prometheus에서 수집된 메트릭 데이터를 prometheus-adapter를 통해서 custom metric api 구성

HorizontalPodAutoscaler에서 사용할 수 있는 메트릭에는 custom metric이 존재한다.
prometheus에서 수집된 메트릭 데이터로 custom metric을 구성하는 방법을 정리한다.

/apis/custom.metrics.k8s.io/v1beta1/

https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/config.md (레퍼런스)