Metrics-server#
Metrics-server - API-сервер, который сохраняет и предоставляет данные метрик DropApp. Он используется для мониторинга ресурсов кластера, таких как CPU, память и ресурсы сети в режиме реального времени.
Metrics Server собирает метрики ресурсов из kubelets и предоставляет их API-серверу DropApp через Metrics API для использования горизонтального или вертикального автомасштабирования. Доступ к Metrics API также можно получить с помощью команды kubectl top, что упрощает отладку конвейеров автоматического масштабирования.
Metrics Server не предназначен для целей, не связанных с автоматическим масштабированием, в частности, для пересылки метрик решениям для мониторинга. В таких случаях следует собирать метрики напрямую с kubelet.
Metrics Server обладает следующими ключевыми свойствами:
единое развертывание, которое работает на большинстве кластеров;
сбор метрик каждые 15 секунд;
эффективность использования ресурсов при использовании - 1 milli CPU и 2 МБ памяти для каждого узла в кластере;
масштабируемая поддержка кластеров до 5000 узлов.
Таблица. Флаги для настройки кластера.
Синтаксис параметра |
Описание |
|---|---|
|
Приоритет типов адресов узлов, используемых при определении адреса для подключения к конкретному узлу (по умолчанию |
|
Не выполнять проверку ЦС обслуживания сертификатов, представленных kubelets. Только для целей тестирования |
|
Указать пакет корневого сертификата для проверки клиентских сертификатов по входящим запросам |
Получите полный список флагов конфигурации Metrics Server, выполнив команду:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.6.3 --help
Предварительные требования#
Предварительные требования для запроса Metrics API:
развернут кластер DropApp;
включен уровень агрегации kube-apiserver;
включена аутентификация и авторизация Webhook на узлах;
подписан сертификат kubelet (или проверка сертификата отключена при помощи команды
--kubelet-insecure-tls);реализован RPC средой выполнения контейнера;
Сеть поддерживает следующую связь плоскости управления и сервер метрик. Узел плоскости управления должен получить доступ к IP-адресу Metrics Server и порту 10250 (или IP-адресу узла и пользовательскому порту, если
hostNetworkвключен), а cервер метрик для kubelet должен быть доступен на всех узлах. Серверу метрик необходимо получить доступ к адресу узла и порту kubelet. Адреса и порты настраиваются в kubelet и публикуются как часть объектаNode. Адреса.status.addressesи порт в pod.status.daemonEndpoints.kubeletEndpoint.port(по умолчанию 10250) уже настроены. Сервер метрик выберет адрес первого узла на основе списка, предоставленного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.
Отследите загруженность узлов в кластере, введите команду:
kubectl top nodesДанная команда позволяет вывести список самых ресурсоемких узлов в кластере DropApp. Ресурсоемкость узлов измеряется в терминах потребления памяти и процессора. Команда отправляет запросы на сервер для получения информации о потреблении ресурсов узлами. Затем она выводит эту информацию в виде таблицы с указанием имени узла, его потребления памяти и процессора, а также других важных показателей.
Вывод будет следующим:
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% - процент используемой памяти компонентом.