Kube-state-metrics#
Kube-state-metrics - это инструмент, предназначенный для сбора и предоставления метрик о состоянии объектов в кластере Kubernetes. Это легковесный агент, который слушает API-сервер Kubernetes и генерирует метрики на основе текущего состояния ресурсов.
Основные задачи и возможности
Сбор метрик о состоянии объектов Kubernetes:
KSM собирает данные о состоянии таких объектов, как
Pod,Deployment,Service, узлы и другие элементы инфраструктуры кластера.Генерация метрик в формате, совместимом с Prometheus:
Метрики доступны через конечную точку HTTP и могут быть легко собраны Prometheus или другими системами мониторинга.
Интеграция с Kubernetes API:
Kube-state-metrics взаимодействует напрямую с API-сервером Kubernetes, отслеживая изменения в состоянии кластера и предоставляя актуальную информацию.
Поддержка мониторинга и автоматизации:
Полученные метрики могут использоваться для построения панелей, анализа состояния кластера, выявления проблем и автоматического реагирования.
Простота развертывания и использования:
Kube-state-metrics легко устанавливается в кластер как стандартный Kubernetes-компонент и не требует сложной настройки.
Примечание
Kube-state-metrics устанавливается по умолчанию с компонентом Monitoring, автоматически расширен для сбора метрик с CRD DropApp, таких как Component и Tool.
Конфигурация values#
Значения можно переопределить через редактирование инструмента с именем kube-state-metrics и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».
-
prometheusScrape - определить включение scrape-аннотаций для Prometheus
image - определить настройки контейнерного образа kube-state-metrics
imagePullSecrets - определить секреты для загрузки образов из приватных реестров
autosharding - определить настройки автоматического шардинга kube-state-metrics
revisionHistoryLimit - определить количество сохраняемых ревизий для отката
extraArgs - определить дополнительные аргументы запуска kube-state-metrics
automountServiceAccountToken - определить автомонтирование токена ServiceAccount
service - определить настройки Service для kube-state-metrics
customLabels - определить дополнительные labels для всех ресурсов chart
selectorOverride - определить переопределение selector labels
hostNetwork - определить использование hostNetwork для pod kube-state-metrics
rbac - определить настройки RBAC-ресурсов kube-state-metrics
kubeRBACProxy - определить настройки sidecar-контейнера kube-rbac-proxy
serviceAccount - определить настройки ServiceAccount для kube-state-metrics
env - определить дополнительные переменные окружения для kube-state-metrics
prometheus - определить настройки интеграции kube-state-metrics с Prometheus Operator
networkPolicy - определить настройки сетевой политики для kube-state-metrics
securityContext - определить pod-level securityContext для kube-state-metrics
containerSecurityContext - определить container-level securityContext для kube-state-metrics
nodeSelector - определить правила выбора узлов для pod kube-state-metrics
affinity - определить affinity-правила для pod kube-state-metrics
tolerations - определить tolerations для pod kube-state-metrics
annotations - определить аннотации для Deployment или StatefulSet
podAnnotations - определить аннотации для pod kube-state-metrics
[podDisruptionBudget - определить настройки PodDisruptionBudget для kube-state-metrics](#podd disruptionbudget—определить-настройки-poddisruptionbudget-для-kube-state-metrics)
metricAllowlist - определить список разрешенных метрик kube-state-metrics
metricDenylist - определить список запрещенных метрик kube-state-metrics
metricLabelsAllowlist - определить список разрешенных Kubernetes labels для метрик ресурсов
collectors - определить набор collectors для kube-state-metrics
kubeconfig - определить использование внешнего kubeconfig для kube-state-metrics
customResourceState - определить настройки CustomResourceStateMetrics для kube-state-metrics
releaseNamespace - определить ограничение сбора ресурсов namespace релиза
namespacesDenylist - определить список исключенных namespace для сбора ресурсов
namespaceOverride - определить override namespace для развертывания kube-state-metrics
resources - определить requests и limits для контейнера kube-state-metrics
selfMonitor - определить настройки self-monitoring для kube-state-metrics
verticalPodAutoscaler - определить настройки VerticalPodAutoscaler для kube-state-metrics
volumeMounts - определить дополнительные volumeMounts для deployment
extraManifests - определить дополнительные Kubernetes manifests для развертывания
containers - определить дополнительные контейнеры для pod kube-state-metrics
initContainers - определить дополнительные initContainers для pod kube-state-metrics
dnsPolicy - определить DNS policy для pod kube-state-metrics
dnsConfig - определить дополнительную DNS-конфигурацию для pod kube-state-metrics
startupProbe - определить startupProbe для контейнера kube-state-metrics
livenessProbe - определить livenessProbe для контейнера kube-state-metrics
readinessProbe - определить readinessProbe для контейнера kube-state-metrics
prometheusScrape - определить включение scrape-аннотаций для Prometheus#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включает автоматическое обнаружение сервиса Prometheus для сбора метрик |
|
image - определить настройки контейнерного образа kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Репозиторий Docker-образа Kube-state-metrics с поддержкой шаблонов |
|
|
Версия образа Kube-state-metrics |
|
|
SHA-хеш образа для обеспечения целостности |
|
|
Политика загрузки образа ( |
|
imagePullSecrets - определить секреты для загрузки образов из приватных реестров#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список секретов для доступа к приватному реестру образов |
|
autosharding - определить настройки автоматического шардинга kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включает автоматическое шардирование Kube-state-metrics для масштабирования |
|
replicas - определить количество реплик kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество реплик развертывания Kube-state-metrics |
|
revisionHistoryLimit - определить количество сохраняемых ревизий для отката#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество старых |
|
extraArgs - определить дополнительные аргументы запуска kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список дополнительных аргументов для Kube-state-metrics (например, |
|
automountServiceAccountToken - определить автомонтирование токена ServiceAccount#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Автоматически монтировать токен сервисного аккаунта в pod |
|
service - определить настройки Service для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Порт сервиса для доступа к метрикам |
|
|
Тип сервиса Kubernetes ( |
|
|
Включить поддержку |
|
|
Список IP-семейств для |
|
|
Политика назначения IP-семейств |
|
|
Порт на узле для типа |
|
|
Статический IP для |
|
|
Список разрешенных CIDR для доступа к |
|
|
Статический |
|
|
Аннотации для сервиса |
|
customLabels - определить дополнительные labels для всех ресурсов chart#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Пользовательские метки, добавляемые ко всем ресурсам |
|
selectorOverride - определить переопределение selector labels#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределение селектора меток для развертывания |
|
releaseLabel - определить добавление release label для совместимости со scraping kube-prometheus-stack#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Добавить метку |
|
hostNetwork - определить использование hostNetwork для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Использовать сеть хоста вместо pod сети |
|
rbac - определить настройки RBAC-ресурсов kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать RBAC ресурсы ( |
|
|
Использовать |
|
|
Дополнительные правила RBAC для пользовательских ресурсов |
|
kubeRBACProxy - определить настройки sidecar-контейнера kube-rbac-proxy#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить |
|
|
Репозиторий образа |
|
|
Версия образа |
|
|
SHA-хеш образа |
|
|
Политика загрузки образа |
|
|
Добавлять аргумент ignore-paths для исключения probe endpoint’ов из проверки RBAC proxy |
|
|
Дополнительные аргументы для |
|
|
Файловая система только для чтения |
|
|
Разрешить повышение привилегий |
|
|
Список отзываемых |
|
|
Upstream-порт, через который kube-rbac-proxy обращается к контейнеру kube-state-metrics |
|
|
Порт proxy endpoint’ов и healthz для readinessProbe контейнера kube-rbac-proxy |
|
|
Лимит CPU для |
|
|
Лимит памяти для |
|
|
Запрос CPU для |
|
|
Запрос памяти для |
|
|
Монтирование дополнительных томов в |
|
serviceAccount - определить настройки ServiceAccount для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать |
|
|
Имя |
`` |
|
Секреты для доступа к реестру образов |
|
|
Аннотации для |
|
|
Автоматически монтировать токен |
|
env - определить дополнительные переменные окружения для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные переменные окружения для контейнера |
|
prometheus - определить настройки интеграции kube-state-metrics с Prometheus Operator#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать |
|
|
Аннотации для |
|
|
Дополнительные метки для |
|
|
Пространство имен для размещения |
|
|
Селектор пространства имен для |
|
|
Метка |
|
|
Метки целей для передачи в Prometheus |
|
|
Метки pod для передачи в Prometheus |
|
|
Максимальное количество образцов данных, собираемых за один запрос при сканировании метрик |
|
|
Лимит количества целей |
|
|
Лимит количества меток на образец |
|
|
Лимит длины имени метки |
|
|
Лимит длины значения метки |
|
|
Переопределение селектора |
|
|
Интервал сбора HTTP-метрик |
|
|
Время ожидания сбора HTTP-метрик |
|
|
URL-прокси для HTTP-метрик |
|
|
Включить HTTP/2 для |
|
|
Сохранять оригинальные метки |
|
|
Правила переименования метрик |
|
|
Правила переименования целей |
|
|
Схема протокола ( |
|
|
Файл с |
|
|
|
|
|
Настройки TLS |
|
|
Интервал сбора самомониторинга |
|
|
Время ожидания сбора самомониторинга |
|
|
URL-прокси для самомониторинга |
|
|
Включить HTTP/2 для самомониторинга |
|
|
Сохранять оригинальные метки самомониторинга |
|
|
Правила переименования метрик самомониторинга |
|
|
Правила переименования целей самомониторинга |
|
|
Схема протокола самомониторинга |
|
|
Файл с |
|
|
Secret с |
|
|
Настройки TLS для самомониторинга |
|
|
Создавать |
|
|
Аннотации для |
|
|
Дополнительные метки для |
|
|
Имя |
|
|
Максимальное количество образцов данных, собираемых за один запрос при сканировании метрик |
|
|
Лимит количества целей |
|
|
Лимит количества меток на образец |
|
|
Лимит длины имени метки |
|
|
Лимит длины значения метки |
|
|
Статические метки для конфигурации |
|
|
Интервал сбора метрик |
|
|
Время ожидания сбора метрик |
|
|
URL-прокси |
|
|
Включить |
|
|
Сохранять оригинальные метки |
|
|
Правила переименования метрик |
|
|
Правила переименования целей |
|
|
Схема протокола |
|
|
Настройки TLS |
|
networkPolicy - определить настройки сетевой политики для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать |
|
|
Тип |
|
securityContext - определить pod-level securityContext для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить контекст безопасности для pod |
|
|
ID группы для запуска процессов в pod |
|
|
ID пользователя для запуска процессов в pod |
|
|
ID группы для владения томами |
|
|
Запускать процессы от непривилегированного пользователя |
|
|
Тип |
|
containerSecurityContext - определить container-level securityContext для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Корневая файловая система только для чтения |
|
|
Разрешить повышение привилегий |
|
|
Список отзываемых Linux |
|
nodeSelector - определить правила выбора узлов для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Селектор узлов для размещения pod |
|
affinity - определить affinity-правила для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Правила аффинности для размещения pod на узлах |
|
tolerations - определить tolerations для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список допусков для размещения pod на узлах с |
|
topologySpreadConstraints - определить ограничения распределения pod kube-state-metrics по топологии кластера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Ограничения для равномерного распределения pod по зонам/узлам |
|
annotations - определить аннотации для Deployment или StatefulSet#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации для |
|
labels - определить labels для Deployment или StatefulSet#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные метки для |
|
podAnnotations - определить аннотации для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Аннотации для pod |
|
podLabels - определить labels для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные метки для pod |
|
podDisruptionBudget - определить настройки PodDisruptionBudget для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Настройки |
|
metricAllowlist - определить список разрешенных метрик kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список разрешенных метрик (имена или регулярные выражения) |
|
metricDenylist - определить список запрещенных метрик kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список запрещенных метрик (взаимоисключающий с |
|
metricLabelsAllowlist - определить список разрешенных Kubernetes labels для метрик ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список Kubernetes меток для включения в метрики (например, namespaces= |
|
metricAnnotationsAllowList - определить список разрешенных Kubernetes annotations для метрик ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список Kubernetes аннотаций для включения в метрики |
|
collectors - определить набор collectors для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список включенных коллекторов Kubernetes ресурсов |
|
kubeconfig - определить использование внешнего kubeconfig для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить использование |
|
|
Настройки |
Отсутствует |
customResourceState - определить настройки CustomResourceStateMetrics для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включить сбор метрик для пользовательских ресурсов (CRD) |
|
|
Создавать ConfigMap с конфигурацией CustomResourceStateMetrics |
|
|
Имя ConfigMap с конфигурацией CustomResourceStateMetrics; если пусто, имя генерируется автоматически |
|
|
Ключ ConfigMap, в котором хранится конфигурация CustomResourceStateMetrics |
|
|
Kind ресурса конфигурации CustomResourceStateMetrics |
|
|
Список описаний custom resources, по которым нужно строить метрики состояния |
` |
releaseNamespace - определить ограничение сбора ресурсов namespace релиза#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Собирать метрики только из пространства имен релиза |
|
namespaces - определить список namespace для сбора ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список пространств имен через запятую для сбора метрик (по умолчанию все) |
|
namespacesDenylist - определить список исключенных namespace для сбора ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Список исключенных пространств имен через запятую |
|
namespaceOverride - определить override namespace для развертывания kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределить пространство имен для развертывания Kube-state-metrics |
|
resources - определить requests и limits для контейнера kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Запросы и лимиты ресурсов (CPU, память) для контейнера |
|
selfMonitor - определить настройки self-monitoring для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включает публикацию self metrics и соответствующую конфигурацию Service или ServiceMonitor |
|
verticalPodAutoscaler - определить настройки VerticalPodAutoscaler для kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать VerticalPodAutoscaler для kube-state-metrics |
|
|
Список ресурсов, которыми может управлять VPA; по умолчанию используются cpu и memory |
|
|
Максимально допустимые ресурсы, которые VPA может назначить pod |
|
|
Минимально допустимые ресурсы, которые VPA может назначить pod |
|
volumeMounts - определить дополнительные volumeMounts для deployment#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные volumeMounts для контейнеров deployment |
|
volumes - определить дополнительные volumes для deployment#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные тома для deployment |
|
extraManifests - определить дополнительные Kubernetes manifests для развертывания#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные Kubernetes манифесты |
|
containers - определить дополнительные контейнеры для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Дополнительные контейнеры |
|
initContainers - определить дополнительные initContainers для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Init-контейнеры |
|
dnsPolicy - определить DNS policy для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Политика DNS для pod |
|
dnsConfig - определить дополнительную DNS-конфигурацию для pod kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Конфигурация DNS для pod |
|
startupProbe - определить startupProbe для контейнера kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включает startupProbe для контейнера kube-state-metrics |
|
|
Количество неуспешных проверок startupProbe до признания запуска неудачным |
|
|
Дополнительные HTTP-заголовки для startupProbe |
|
|
Схема обращения для startupProbe, например http или https |
|
|
Задержка перед первой проверкой startupProbe |
|
|
Интервал между запусками startupProbe |
|
|
Количество успешных проверок startupProbe, необходимых для успешного прохождения |
|
|
Таймаут одной проверки startupProbe |
|
livenessProbe - определить livenessProbe для контейнера kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество неуспешных проверок livenessProbe до перезапуска контейнера |
|
|
Дополнительные HTTP-заголовки для livenessProbe |
|
|
Схема обращения для livenessProbe, например http или https |
|
|
Задержка перед первой проверкой livenessProbe после старта контейнера |
|
|
Интервал между запусками livenessProbe |
|
|
Количество успешных проверок livenessProbe, необходимых для успешного результата |
|
|
Таймаут одной проверки livenessProbe |
|
readinessProbe - определить readinessProbe для контейнера kube-state-metrics#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество неуспешных проверок readinessProbe до перевода контейнера в состояние NotReady |
|
|
Дополнительные HTTP-заголовки для readinessProbe |
|
|
Схема обращения для readinessProbe, например http или https |
|
|
Задержка перед первой проверкой readinessProbe после старта контейнера |
|
|
Интервал между запусками readinessProbe |
|
|
Количество успешных проверок readinessProbe, необходимых для успешного результата |
|
|
Таймаут одной проверки readinessProbe |
|