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 – настройки Docker-образа 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.7.2

image.pullPolicy

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

IfNotPresent

image.imagePullSecrets

Список секретов для доступа к приватному реестру Docker-образов

[]

nameOverride и fullnameOverride – переопределение имен#

Значение

Описание

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

nameOverride

Переопределение имени релиза. Строка или пусто

""

fullnameOverride

Полное переопределение имени релиза. Строка или пусто

""

serviceAccount – настройки сервис-аккаунта#

Значение

Описание

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

serviceAccount.create

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

true

serviceAccount.annotations

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

{}

serviceAccount.name

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

""

serviceAccount.secrets

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

[]

rbac – настройки RBAC#

Значение

Описание

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

rbac.create

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

true

rbac.pspEnabled

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

false

apiService – настройки API Service#

Значение

Описание

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

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 – общие метки#

Значение

Описание

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

commonLabels

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

{}

podLabels – метки Pod#

Значение

Описание

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

podLabels

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

{}

podAnnotations – аннотации Pod#

Значение

Описание

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

podAnnotations

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

{}

securityContext – контекст безопасности контейнера#

Значение

Описание

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

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 – приоритет Pod#

Значение

Описание

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

priorityClassName

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

system-cluster-critical

containerPort – порт контейнера#

Значение

Описание

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

containerPort

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

10250

hostNetwork – запуск в hostNetwork#

Значение

Описание

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

hostNetwork.enabled

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

false

replicas – количество реплик#

Значение

Описание

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

replicas

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

1

revisionHistoryLimit – лимит истории ревизий#

Значение

Описание

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

revisionHistoryLimit

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

~ (не задано)

podDisruptionBudget – настройки PDB#

Значение

Описание

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

podDisruptionBudget.enabled

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

false

podDisruptionBudget.minAvailable

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

~

podDisruptionBudget.maxUnavailable

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

~

defaultArgs – стандартные аргументы запуска#

Значение

Описание

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

defaultArgs

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

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

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

Значение

Описание

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

args

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

[]

livenessProbe – liveness-проба#

Значение

Описание

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

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 – readiness-проба#

Значение

Описание

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

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 – настройки Kubernetes Service#

Значение

Описание

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

service.annotations

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

{}

service.labels

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

{}

service.port

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

443

service.type

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

ClusterIP

metrics – включение сбора метрик#

Значение

Описание

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

metrics.enabled

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

false

serviceMonitor – интеграция с Prometheus Operator#

Значение

Описание

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

serviceMonitor.enabled

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

false

serviceMonitor.additionalLabels

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

{}

serviceMonitor.interval

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

1m

serviceMonitor.scrapeTimeout

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

10s

serviceMonitor.metricRelabelings

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

[]

serviceMonitor.relabelings

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

[]

resources – ресурсы для metrics-server#

Значение

Описание

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

resources.requests.cpu

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

100m

resources.requests.memory

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

200Mi

resources.limits.cpu

Лимит CPU

100m

resources.limits.memory

Лимит памяти

200Mi

extraVolumeMounts – дополнительные VolumeMounts#

Значение

Описание

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

extraVolumeMounts

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

[]

extraVolumes – дополнительные Volumes#

Значение

Описание

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

extraVolumes

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

[]

nodeSelector – nodeSelector для pod#

Значение

Описание

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

nodeSelector

NodeSelector для pod Metrics-server

{}

tolerations – tolerations для pod#

Значение

Описание

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

tolerations

Список tolerations для pod

[]

affinity – affinity для pod#

Значение

Описание

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

affinity

Affinity для pod

{}

topologySpreadConstraints – распределение pod по топологии#

Значение

Описание

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

topologySpreadConstraints

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

[]

dnsConfig – настройки DNS для Pod#

Значение

Описание

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

dnsConfig

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

{}

deploymentAnnotations – аннотации для Deployment#

Значение

Описание

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

deploymentAnnotations

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

{}

schedulerName – имя scheduler#

Значение

Описание

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

schedulerName

Имя scheduler для pod

""

tmpVolume – настройки временного тома#

Значение

Описание

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

tmpVolume.emptyDir

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

{}