Модуль monitoring-kubernetes обеспечивает прозрачный и своевременный контроль состояния всех узлов кластера и ключевых инфраструктурных компонентов.
Подробнее с возможностями и настройками модуля можно ознакомиться в разделе документации модуля.
Архитектура модуля
Для упрощения схемы приняты следующие допущения:
- На схеме контейнеры разных подов показаны как взаимодействующие напрямую. Фактически обмен выполняется через соответствующие сервисы Kubernetes (внутренние балансировщики). Названия сервисов не указываются, если они очевидны из контекста. В остальных случаях название сервиса приводится над стрелкой.
- Поды могут быть запущены в нескольких репликах, однако на схеме каждый под показан в единственном экземпляре.
Архитектура модуля monitoring-kubernetes на уровне 2 модели C4 и его взаимодействия с другими компонентами Deckhouse Kubernetes Platform (DKP) изображены на следующей диаграмме:

Компоненты модуля
Модуль состоит из следующих компонентов:
-
Kube-state-metrics (Deployment) — экспортер Prometheus, который собирает и предоставляет метрики о состоянии объектов в кластере Kubernetes. Он подключается к API-серверу Kubernetes, анализирует текущее состояние ресурсов (Pods, Services, Deployments, Nodes и других) и генерирует на этой основе метрики.
Состоит из следующих контейнеров:
- kube-state-metrics — основной контейнер. Является Open Source-проектом;
- kube-rbac-proxy — сайдкар-контейнер с авторизующим прокси на основе Kubernetes RBAC для организации защищенного доступа к метрикам о состоянии объектов Kubernetes API, а также метрикам состояния самого экспортера. Является Open Source-проектом.
-
Node-exporter (DaemonSet) — экспортер Prometheus, запускаемый на каждом узле кластера и собирающий метрики с этих узлов. Он собирает данные об операционной системе и аппаратном обеспечении.
Состоит из следующих контейнеров:
- node-exporter — основной контейнер. Является Open Source-проектом;
- kubelet-eviction-thresholds-exporter — сайдкар-контейнер, который снимает показатели доступности файловых дескрипторов, сокетов, свободного места и inode на каждом узле, сравнивает их в процентном соотношении с Eviction thresholds (порогами вытеснения), установленными в конфигурации kubelet, и экспортирует полученные значения в виде метрик. Является разработкой компании «Флант»;
- kube-rbac-proxy — сайдкар-контейнер, обеспечивающий авторизованный доступа к метрикам экспортера. Подробно описан выше.
-
Oom-kills-exporter (DaemonSet) — экспортер Prometheus, запускаемый на каждом узле кластера, следящий за событиями OOM-kill (Out-Of-Memory kill), происходящими с контейнерами, запущенными на этих узлах, и экспортирующий счетчик таких событий в виде метрики. Oom-kills-exporter также следит за подами для синхронизации лейблов, содержащих идентификаторы контейнеров, которые добавляются к метрикам.
Состоит из следующих контейнеров:
- oom-kills-exporter — основной контейнер. Является разработкой компании «Флант»;
- kube-rbac-proxy — сайдкар-контейнер, обеспечивающий авторизованный доступа к метрикам экспортера. Подробно описан выше.
Взаимодействия модуля
Модуль взаимодействует со следующими компонентами:
-
Kube-apiserver:
- следит за объектами API Kubernetes;
- выполняет авторизацию запросов на метрики.
С модулем взаимодействуют следующие внешние компоненты:
- Prometheus-main — собирает метрики с экспортеров модуля.