Metrics-server#

Metrics-server - это легковесный компонент Kubernetes, предназначенный для сбора и предоставления метрик использования ресурсов (CPU и памяти) на уровне pod и узлов кластера.

Основные задачи и возможности
  • Сбор метрик в реальном времени:

    Получает данные о загрузке CPU и использовании памяти с Kubelet на каждом узле кластера через HTTP-запросы.

  • Интеграция с Kubernetes API:

    Предоставляет доступ к метрикам через API (metrics.k8s.io), что позволяет использовать их в инструментах управления и автоматизации. Показывает метрики командой kubectl top pods и kubectl top nodes.

  • Поддержка автоматического масштабирования (HPA):

    Является основным источником данных для Horizontal Pod Autoscaler, позволяя автоматически изменять количество Pod в зависимости от нагрузки.

  • Мониторинг состояния узлов и контейнеров:

    Позволяет отслеживать базовые показатели ресурсного потребления всей инфраструктуры кластера.

  • Простота установки и масштабируемости:

    Легко развертывается как add-on и поддерживает горизонтальное масштабирование для работы в крупных кластерах.

Примечание

Metrics-server устанавливается по умолчанию с компонентом Monitoring.

Конфигурация values#

Значения можно переопределить через редактирование инструмента с именем metrics-server и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».

image - определить настройки контейнерного образа metrics-server#

Параметр

Описание

Значение по умолчанию

image.repository

Путь к репозиторию Docker-образа Metrics-server. Формируется из глобальных переменных

{{ .Values.global.image.registry }}/{{ .Values.global.image.repository }}/{{ .Values.global.dappVersion }}/dapp-metrics-server/metrics-server

image.tag

Тег Docker-образа Metrics-server. Строка

v0.8.1

image.pullPolicy

Политика скачивания образа. Возможные значения: Always, IfNotPresent, Never

IfNotPresent

imagePullSecrets - определить секреты для загрузки образов из приватных реестров#

Параметр

Описание

Значение по умолчанию

imagePullSecrets

Список секретов Kubernetes, используемых для аутентификации при загрузке контейнерных образов из приватных реестров

[]

nameOverride - определить сокращенное переопределение имени ресурсов#

Параметр

Описание

Значение по умолчанию

nameOverride

Переопределение имени для ресурсов Kubernetes

""

fullnameOverride - определить полное переопределение имени ресурсов#

Параметр

Описание

Значение по умолчанию

fullnameOverride

Полное переопределение имени для всех ресурсов

""

serviceAccount - определить настройки ServiceAccount для metrics-server#

Параметр

Описание

Значение по умолчанию

serviceAccount.create

Создать сервис-аккаунт. Значения: true/false

true

serviceAccount.annotations

Аннотации для сервис-аккаунта. YAML-объект

{}

serviceAccount.name

Имя сервис-аккаунта. Если не указано и create=true, имя генерируется автоматически

""

serviceAccount.secrets

Список секретов, которые можно монтировать этим сервис-аккаунтом

[]

rbac - определить настройки RBAC-ресурсов metrics-server#

Параметр

Описание

Значение по умолчанию

rbac.create

Создавать ресурсы RBAC. Значения: true/false

true

rbac.pspEnabled

Включить PodSecurityPolicy (не поддерживается в Kubernetes 1.25+). Значения: true/false

false

apiService - определить настройки APIService для metrics.k8s.io#

Параметр

Описание

Значение по умолчанию

apiService.create

Создавать объект APIService для v1beta1.metrics.k8s.io. Значения: true/false

true

apiService.annotations

Аннотации для APIService. YAML-объект

{}

apiService.insecureSkipTLSVerify

Пропускать проверку TLS-сертификата при обращении к APIService. Значения: true/false

true

apiService.caBundle

PEM-кодированный CA Bundle для валидации TLS. Строка

""

commonLabels - определить общие labels для ресурсов chart#

Параметр

Описание

Значение по умолчанию

commonLabels

Общие метки для всех создаваемых ресурсов

{}

podLabels - определить дополнительные labels для pod metrics-server#

Параметр

Описание

Значение по умолчанию

podLabels

Метки для pod Metrics-server

{}

podAnnotations - определить дополнительные аннотации для pod metrics-server#

Параметр

Описание

Значение по умолчанию

podAnnotations

Аннотации для pod Metrics-server

{}

podSecurityContext - определить pod-level securityContext для metrics-server#

Параметр

Описание

Значение по умолчанию

podSecurityContext

Настройки securityContext на уровне pod для metrics-server

{}

securityContext - определить container-level securityContext для metrics-server#

Параметр

Описание

Значение по умолчанию

securityContext.allowPrivilegeEscalation

Разрешить повышение привилегий. Значения: true/false

false

securityContext.readOnlyRootFilesystem

Только для чтения root-файловая система. Значения: true/false

true

securityContext.runAsNonRoot

Запускать только не от root. Значения: true/false

true

securityContext.runAsUser

UID пользователя для запуска контейнера

10001

securityContext.runAsGroup

GID группы для запуска контейнера

10001

securityContext.seccompProfile.type

Тип профиля seccomp. Обычно RuntimeDefault

RuntimeDefault

securityContext.capabilities.drop

Список capabilities, которые будут удалены

- ALL

priorityClassName - определить PriorityClass для pod metrics-server#

Параметр

Описание

Значение по умолчанию

priorityClassName

Имя класса приоритета для pod

system-cluster-critical

containerPort - определить порт контейнера metrics-server#

Параметр

Описание

Значение по умолчанию

containerPort

Порт, на котором работает Metrics-server

10250

hostNetwork - определить использование hostNetwork для metrics-server#

Параметр

Описание

Значение по умолчанию

hostNetwork.enabled

Запускать Metrics-server в режиме hostNetwork. Необходимо при некоторых сетевых конфигурациях. true/false

false

replicas - определить количество реплик Deployment metrics-server#

Параметр

Описание

Значение по умолчанию

replicas

Количество реплик Metrics-server

1

revisionHistoryLimit - определить количество сохраняемых ревизий Deployment#

Параметр

Описание

Значение по умолчанию

revisionHistoryLimit

Максимальное количество сохраненных ревизий развертывания

Отсутствует

updateStrategy - определить стратегию обновления Deployment metrics-server#

Параметр

Описание

Значение по умолчанию

updateStrategy

Стратегия обновления Deployment metrics-server

{}

podDisruptionBudget - определить настройки PodDisruptionBudget для metrics-server#

Параметр

Описание

Значение по умолчанию

podDisruptionBudget.enabled

Включить PodDisruptionBudget. Значения: true/false

false

podDisruptionBudget.minAvailable

Минимальное количество доступных pod

Отсутствует

podDisruptionBudget.maxUnavailable

Максимальное количество недоступных pod

Отсутствует

podDisruptionBudget.unhealthyPodEvictionPolicy

Политика эвикции для нездоровых pod в PodDisruptionBudget

Отсутствует

defaultArgs - определить стандартные аргументы запуска metrics-server#

Параметр

Описание

Значение по умолчанию

defaultArgs

Список стандартных аргументов командной строки

- –cert-dir=/tmp
- –kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- –kubelet-use-node-status-port
- –metric-resolution=15s
- –kubelet-insecure-tls

args - определить дополнительные аргументы запуска metrics-server#

Параметр

Описание

Значение по умолчанию

args

Список дополнительных аргументов

[]

livenessProbe - определить проверку живости контейнера metrics-server#

Параметр

Описание

Значение по умолчанию

livenessProbe.httpGet.path

HTTP-путь для проверки живости

/livez

livenessProbe.httpGet.port

Порт для проверки

https

livenessProbe.httpGet.scheme

Схема (HTTP/HTTPS)

HTTPS

livenessProbe.initialDelaySeconds

Задержка перед первой проверкой

0

livenessProbe.periodSeconds

Периодичность проверки

10

livenessProbe.failureThreshold

Количество неудачных попыток до рестарта

3

readinessProbe - определить проверку готовности контейнера metrics-server#

Параметр

Описание

Значение по умолчанию

readinessProbe.httpGet.path

HTTP-путь для проверки готовности

/readyz

readinessProbe.httpGet.port

Порт для проверки

https

readinessProbe.httpGet.scheme

Схема (HTTP/HTTPS)

HTTPS

readinessProbe.initialDelaySeconds

Задержка перед первой проверкой

20

readinessProbe.periodSeconds

Периодичность проверки

10

readinessProbe.failureThreshold

Количество неудачных попыток до рестарта

3

service - определить настройки Service для metrics-server#

Параметр

Описание

Значение по умолчанию

service.type

Тип Kubernetes Service. Например, ClusterIP, NodePort, LoadBalancer

ClusterIP

service.port

Порт, на котором сервис слушает трафик

443

service.annotations

Аннотации для сервиса

{}

service.labels

Метки для сервиса

{}

addonResizer - определить настройки sidecar-контейнера addon-resizer#

Параметр

Описание

Значение по умолчанию

addonResizer.enabled

Включает sidecar-контейнер addon-resizer для автоматической подстройки ресурсов

false

addonResizer.image.repository

Репозиторий образа addon-resizer

registry.k8s.io/autoscaling/addon-resizer

addonResizer.image.tag

Тег образа addon-resizer

1.8.23

addonResizer.securityContext.allowPrivilegeEscalation

Разрешать повышение привилегий в контейнере addon-resizer

false

addonResizer.securityContext.readOnlyRootFilesystem

Монтировать корневую файловую систему контейнера addon-resizer только для чтения

true

addonResizer.securityContext.runAsNonRoot

Запускать контейнер addon-resizer от непривилегированного пользователя

true

addonResizer.securityContext.runAsUser

UID пользователя контейнера addon-resizer

1000

addonResizer.securityContext.seccompProfile.type

Тип seccomp-профиля для контейнера addon-resizer

RuntimeDefault

addonResizer.securityContext.capabilities.drop

Список Linux capabilities, удаляемых у контейнера addon-resizer

- ALL

addonResizer.resources.requests.cpu

CPU request контейнера addon-resizer

40m

addonResizer.resources.requests.memory

Memory request контейнера addon-resizer

25Mi

addonResizer.resources.limits.cpu

CPU limit контейнера addon-resizer

40m

addonResizer.resources.limits.memory

Memory limit контейнера addon-resizer

25Mi

addonResizer.nanny.cpu

Базовое значение CPU для расчета scaling-параметров addon-resizer

0m

addonResizer.nanny.extraCpu

Дополнительный CPU, добавляемый на единицу роста кластера

1m

addonResizer.nanny.memory

Базовое значение памяти для расчета scaling-параметров addon-resizer

0Mi

addonResizer.nanny.extraMemory

Дополнительная память, добавляемая на единицу роста кластера

2Mi

addonResizer.nanny.minClusterSize

Минимальный размер кластера, начиная с которого применяется scaling-логика nanny

100

addonResizer.nanny.pollPeriod

Интервал опроса состояния кластера для пересчета ресурсов в миллисекундах

300000

addonResizer.nanny.threshold

Порог изменения размера кластера, после которого выполняется пересчет ресурсов

5

metrics - определить настройки публикации метрик metrics-server#

Параметр

Описание

Значение по умолчанию

metrics.enabled

Включить экспорт метрик. Значения: true/false

false

serviceMonitor - определить настройки ServiceMonitor для Prometheus#

Параметр

Описание

Значение по умолчанию

serviceMonitor.enabled

Включить ServiceMonitor для Prometheus Operator. Значения: true/false

true

serviceMonitor.additionalLabels

Дополнительные метки для ServiceMonitor

{}

serviceMonitor.interval

Интервал сбора метрик

1m

serviceMonitor.scrapeTimeout

Время ожидания сбора метрик

10s

serviceMonitor.metricRelabelings

Дополнительные правила relabel для метрик

[]

serviceMonitor.relabelings

Дополнительные правила relabel

[]

resources - определить requests и limits для контейнера metrics-server#

Параметр

Описание

Значение по умолчанию

resources.requests.cpu

Запрашиваемое количество CPU

100m

resources.requests.memory

Запрашиваемое количество памяти

200Mi

resources.limits.cpu

Лимит CPU

200m

resources.limits.memory

Лимит памяти

300Mi

extraVolumeMounts - определить дополнительные volumeMounts для контейнера metrics-server#

Параметр

Описание

Значение по умолчанию

extraVolumeMounts

Список дополнительных VolumeMounts

[]

extraVolumes - определить дополнительные volumes для pod metrics-server#

Параметр

Описание

Значение по умолчанию

extraVolumes

Список дополнительных Volumes

[]

nodeSelector - определить правила выбора узлов для metrics-server#

Параметр

Описание

Значение по умолчанию

nodeSelector

NodeSelector для pod Metrics-server

{}

tolerations - определить tolerations для pod metrics-server#

Параметр

Описание

Значение по умолчанию

tolerations

Список tolerations для pod

[]

affinity - определить affinity-правила для pod metrics-server#

Параметр

Описание

Значение по умолчанию

affinity

Affinity для pod

{}

topologySpreadConstraints - определить ограничения распределения pod metrics-server по топологии кластера#

Параметр

Описание

Значение по умолчанию

topologySpreadConstraints

Список ограничений по распределению pod

[]

dnsConfig - определить дополнительную DNS-конфигурацию для pod metrics-server#

Параметр

Описание

Значение по умолчанию

dnsConfig

DNS-конфигурация для pod

{}

deploymentAnnotations - определить аннотации для Deployment metrics-server#

Параметр

Описание

Значение по умолчанию

deploymentAnnotations

Аннотации для развертывания

{}

schedulerName - определить scheduler для pod metrics-server#

Параметр

Описание

Значение по умолчанию

schedulerName

Имя scheduler для pod

""

tmpVolume - определить временный volume для metrics-server#

Параметр

Описание

Значение по умолчанию

tmpVolume.emptyDir

Настройки emptyDir для tmp-тома

{}

tls - определить настройки TLS для metrics-server и APIService#

Параметр

Описание

Значение по умолчанию

tls.type

Метод управления TLS-сертификатом; поддерживаются metrics-server, helm, cert-manager и existingSecret

metrics-server

tls.clusterDomain

DNS-домен кластера, используемый для формирования Subject Alternative Names сертификата

cluster.local

tls.certManager.addInjectorAnnotations

Автоматически добавлять аннотацию cert-manager.io/inject-ca-from в ресурс APIService

true

tls.certManager.existingIssuer.enabled

Использовать существующий issuer cert-manager вместо создания нового

false

tls.certManager.existingIssuer.kind

Тип существующего issuer cert-manager, например Issuer или ClusterIssuer

Issuer

tls.certManager.existingIssuer.name

Имя существующего issuer cert-manager

my-issuer

tls.certManager.duration

Запрашиваемая длительность действия сертификата

""

tls.certManager.renewBefore

Период до истечения сертификата, за который cert-manager должен начать обновление

""

tls.certManager.annotations

Дополнительные аннотации для ресурса Certificate

{}

tls.certManager.labels

Дополнительные labels для ресурса Certificate

{}

tls.helm.lookup

Использовать helm lookup для повторного использования Secret, созданного в предыдущей установке Helm

true

tls.helm.certDurationDays

Срок действия сертификата, генерируемого Helm, в днях

365

tls.existingSecret.name

Имя существующего Secret с TLS-материалами, который нужно использовать

""

tls.existingSecret.lookup

Использовать helm lookup для автоматического заполнения apiService.caBundle из существующего Secret

true