Metrics-server#
Metrics-server - API-сервер, который сохраняет и предоставляет данные метрик DropApp. Он используется для мониторинга ресурсов кластера, таких как CPU, память и ресурсы сети в режиме реального времени.
Metrics Server собирает метрики ресурсов из Kubelet и предоставляет их API-серверу DropApp через Metrics API для использования горизонтального или вертикального автомасштабирования. Доступ к Metrics API также можно получить с помощью команды kubectl top, что упрощает отладку конвейеров автоматического масштабирования.
Metrics Server не предназначен для целей, не связанных с автоматическим масштабированием, в частности, для пересылки метрик решениям для мониторинга. В таких случаях следует собирать метрики напрямую с Kubelet.
Metrics Server обладает следующими ключевыми свойствами:
единое развертывание, которое работает на большинстве кластеров;
сбор метрик каждые 15 секунд;
эффективность использования ресурсов при использовании - 1 milli CPU и 2 МБ памяти для каждого node в кластере;
масштабируемая поддержка кластеров до 5000 nodes.
Синтаксис параметра |
Описание |
|---|---|
|
Приоритет типов адресов nodes, используемых при определении адреса для подключения к конкретному node (по умолчанию |
|
Не выполнять проверку ЦС обслуживания сертификатов, представленных Kubelet. Только для целей тестирования |
|
Указать пакет корневого сертификата для проверки клиентских сертификатов по входящим запросам |
Получите полный список флагов конфигурации Metrics Server, выполнив команду:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.6.3 --help
Предварительные требования#
Предварительные требования для запроса Metrics API:
развернут кластер DropApp;
включен уровень агрегации Kube-apiserver;
включена аутентификация и авторизация Webhook на nodes;
подписан сертификат Kubelet (или проверка сертификата отключена при помощи команды
--kubelet-insecure-tls);реализован RPC средой выполнения контейнера;
сеть поддерживает следующую связь плоскости управления и сервер метрик. Node плоскости управления должен получить доступ к IP-адресу Metrics Server и порту 10250 (или IP-адресу node и пользовательскому порту, если
hostNetworkвключен), а сервер метрик для Kubelet должен быть доступен на всех nodes. Серверу метрик необходимо получить доступ к адресу node и порту Kubelet. Адреса и порты настраиваются в Kubelet и публикуются как часть объектаNode. Адреса.status.addressesи порт в pod.status.daemonEndpoints.kubeletEndpoint.port(по умолчанию 10250) уже настроены. Сервер метрик выберет адрес первого node на основе списка, предоставленногоkubelet-preferred-address-typesфлагом командной строки (по умолчаниюInternal IP,External IP,Hostnameв манифестах).
Выполнение запроса#
Для запроса Metrics API для
kube-scheduler, содержащегося в namespacekube-systemи переданного jq для облегчения чтения, можно использовать следующий запрос:kubectl get --raw /api/v1/namespaces/kube-system/pods/<pod-name>/metrics --certificate-authority=/path/to/ca.crt --key=/path/to/key.key --kubeconfig=/path/to/kubeconfig.yml --server=https://kubernetes.default --token=<token> | jq -r -f <path/to/jq_script.jq>Где:
rawуказывает на использование необработанного формата вывода;certificate-authorityи--keyуказывают на путь к сертификату и ключу, используемым для аутентификации;kubeconfigуказывает на путь к файлуkubeconfig, содержащему учетные данные для доступа к API;server указывает на адрес сервера, на котором находится kube-scheduler;
tokenуказывает на токен аутентификации, используемый для доступа к API;| jq-r -fуказывает на выполнение скрипта jq, который обрабатывает полученные данные и выводит их в нужном формате;<path/to/jq_script.jq>указывает на путь до скрипта jq.
Обратите внимание, что в данном примере предполагается, что у администратора присутствуют необходимые учетные данные и сертификаты для доступа к API.
Отследите загруженность nodes в кластере, введите команду:
kubectl top nodesДанная команда позволяет вывести список самых ресурсоемких nodes в кластере DropApp. Ресурсоемкость nodes измеряется в терминах потребления памяти и процессора. Команда отправляет запросы на сервер для получения информации о потреблении ресурсов nodes. Затем она выводит эту информацию в виде таблицы с указанием имени node, его потребления памяти и процессора, а также других важных показателей.
Вывод будет следующим:
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% Control plane 83m 2% 1989Mi 26% Worker1 20m 1% 1889Mi 50% Worker2 21m 1% 1289Mi 47%Вывод отображает информацию о загрузке ресурсов (CPU и памяти) для разных компонентов кластера DropApp. Каждая строка представляет собой информацию о конкретном компоненте:
NAME- имя компонента;CPU(cores)- количество ядер процессора, используемых компонентом;CPU%- процент использования процессора компонентом;MEMORY(bytes)- объем используемой памяти компонентом в байтах;MEMORY%- процент используемой памяти компонентом.