Сервер метрик — это масштабируемый и эффективный источник метрик ресурсов контейнера для встроенных конвейеров автомасштабирования Kubernetes.
Metrics Server собирает метрики ресурсов из Kubelets и предоставляет их в API-сервере Kubernetes через Metrics API для использования горизонтальным автомасштабированием подов и вертикальным автомасштабированием подов. Доступ к API метрик также можно получить с помощью kubectl top
, что упрощает отладку конвейеров автомасштабирования.
Осторожность
Сервер метрик предназначен только для целей автоматического масштабирования. Например, не используйте его для пересылки метрик решениям мониторинга или в качестве источника метрик решения мониторинга. В таких случаях собирайте метрики напрямую из конечной точки Kubelet /metrics/resource
.
Сервер метрик предлагает:
Вы можете использовать Сервер метрик для:
Не используйте Metrics Server, если вам нужно:
Для неподдерживаемых случаев использования ознакомьтесь с решениями для полного мониторинга, такими как Prometheus.
У Metrics Server есть особые требования к конфигурации кластера и сети. Эти требования не являются стандартными для всех дистрибутивов кластера. Перед использованием Metrics Server убедитесь, что ваш дистрибутив кластера поддерживает эти требования:
--kubelet-insecure-tls
на сервер метрик).hostNetwork
). Узнайте больше о связи между плоскостью управления и узлом..status.addresses
и порт в поле .status.daemonEndpoints.kubeletEndpoint.port
(по умолчанию 10250). Сервер метрик выберет адрес первого узла на основе списка, предоставленного флагом командной строки kubelet-preferred-address-types
(по умолчанию InternalIP,ExternalIP,Hostname
в манифестах). Сервер метрик можно установить либо непосредственно из манифеста YAML, либо через официальную диаграмму Helm. Чтобы установить последнюю версию Metrics Server из манифестаComponents.yaml , выполните следующую команду.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
Инструкции по установке предыдущих выпусков можно найти в выпусках Metrics Server.
Сервер метрик | Группа/версия API метрик | Поддерживаемая версия Kubernetes |
---|---|---|
0.7.х | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.х | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.х | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.х | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.х | metrics.k8s.io/v1beta1 | 1,8-1,21 |
* Версии Kubernetes ниже v1.16 требуют передачи флага командной строки --authorization-always-allow-paths=/livez,/readyz
Сервер метрик можно установить в режиме высокой доступности непосредственно из манифеста YAML или через официальную диаграмму Helm, установив значение replicas
больше 1
. Чтобы установить последнюю версию Metrics Server в режиме высокой доступности из манифеста high-availability.yaml , выполните следующую команду.
В Kubernetes v1.21+:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
В Kubernetes v1.19-1.21:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
Примечание
Для этой конфигурации требуется наличие кластера как минимум с двумя узлами, на которых можно запланировать сервер Metrics.
Кроме того, чтобы максимизировать эффективность этой высокодоступной конфигурации, рекомендуется добавить флаг CLI --enable-aggregator-routing=true
в kube-apiserver, чтобы запросы, отправляемые на Metrics Server, распределяли нагрузку между двумя экземплярами.
Диаграмма Helm поддерживается как дополнительный компонент в этом репозитории и выпускается в репозиторий диаграмм, поддерживаемый веткой gh-pages
. Новая версия диаграммы будет выпускаться для каждого выпуска Metrics Server, а также может выпускаться независимо, если в этом есть необходимость. На диаграмму в master
ветке не следует ссылаться напрямую, поскольку она может содержать изменения с момента ее последнего выпуска. Для просмотра кода диаграммы используйте тег выпуска диаграммы.
Серверу метрик требуется возможность CAP_NET_BIND_SERVICE
для привязки к привилегированным портам без полномочий root. Если вы используете Metrics Server в среде, которая использует PSS или другие механизмы для ограничения возможностей модулей, убедитесь, что Metrics Server разрешено использовать эту возможность. Это применимо, даже если вы используете флаг --secure-port
для изменения порта, который Metrics Server привязывает к непривилегированному порту.
Начиная с версии 0.5.0, Metrics Server поставляется с запросами ресурсов по умолчанию, которые должны гарантировать хорошую производительность для большинства конфигураций кластера до 100 узлов:
Использование ресурсов сервера метрик зависит от нескольких независимых измерений, образующих конверт масштабируемости. Конфигурация сервера метрик по умолчанию должна работать в кластерах, которые не превышают ни одного из пороговых значений, перечисленных ниже:
Количество | Порог пространства имен | Порог кластера |
---|---|---|
#Узлы | н/д | 100 |
#Подов на узел | 70 | 70 |
#Развертывания с помощью HPA | 100 | 100 |
Ресурсы можно корректировать пропорционально в зависимости от количества узлов в кластере. Для кластеров более 100 узлов дополнительно выделяют:
Вы можете использовать тот же подход для снижения запросов на ресурсы, но существует граница, где это может повлиять на другие параметры масштабируемости, такие как максимальное количество модулей на узел.
В зависимости от настройки вашего кластера вам также может потребоваться изменить флаги, передаваемые в контейнер сервера метрик. Наиболее полезные флаги:
--kubelet-preferred-address-types
— Приоритет типов адреса узла, используемый при определении адреса для подключения к конкретному узлу (по умолчанию [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP])--kubelet-insecure-tls
— не проверять центр сертификации обслуживающих сертификатов, представленных Kubelets. Только в целях тестирования.--requestheader-client-ca-file
— укажите пакет корневых сертификатов для проверки сертификатов клиентов по входящим запросам.--node-selector
— можно выполнить сбор метрик из указанных узлов на основе меток.Полный список флагов конфигурации сервера метрик можно получить, выполнив:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
Сервер метрик — это компонент основного конвейера метрик, описанного в архитектуре мониторинга Kubernetes.
Для получения дополнительной информации см.:
Прежде чем публиковать информацию о проблеме, сначала ознакомьтесь с разделами «Часто задаваемые вопросы» и «Известные проблемы».
Узнайте, как взаимодействовать с сообществом Kubernetes, на странице сообщества.
Вы можете связаться с сопровождающими этого проекта по адресу:
Этот проект поддерживается SIG Instrumentation.
Участие в сообществе Kubernetes регулируется Кодексом поведения Kubernetes.