Изменение параметров сервера метрик
Сервер метрик (Metrics Server)kubelet
он собирает метрики с каждого узла в кластере Managed Service for Kubernetes и предоставляет их через Metrics APIkubectl top node
или kubectl top pod
. Подробнее см. в документации Metrics Server
Под сервера метрик содержит два контейнера: metrics-server
и metrics-server-nanny
, который является addon-resizermetrics-server
. Контейнер metrics-server-nanny
отвечает за автоматическое выделение ресурсов контейнеру metrics-server
в зависимости от количества узлов в кластере Managed Service for Kubernetes.
В некоторых случаях компонент metrics-server-nanny
может работать некорректно. Например, если при малом количестве узлов в кластере Managed Service for Kubernetes создано большое количество подов. В этом случае под сервера метрик превысит свои лимиты, что может вызвать снижение производительности сервера метрик.
Чтобы избежать этого, измените параметры сервера метрик вручную:
- Посмотрите количество ресурсов, выделенных для пода сервера метрик.
- Измените параметры сервера метрик.
- Проверьте результат.
Чтобы вернуть параметры сервера метрик до значений по умолчанию, сбросьте их.
Посмотрите количество ресурсов, выделенных для пода сервера метрик
-
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Установите kubectl
и настройте его на работу с созданным кластером. -
Выполните команду:
kubectl get pod <имя_пода_сервера_метрик> \ --namespace=kube-system \ --output=json | \ jq '.spec.containers[] | select(.name == "metrics-server") | .resources'
Ресурсы вычисляются по следующим формулам:
cpu = baseCPU + cpuPerNode * nodesCount memory = baseMemory + memoryPerNode * nodesCount
Где:
baseCPU
— базовое количество CPU.cpuPerNode
— количество CPU на каждый узел.nodesCount
— количество узлов Managed Service for Kubernetes.baseMemory
— базовое количество оперативной памяти.memoryPerNode
— количество оперативной памяти на каждый узел.
Измените параметры сервера метрик
-
Откройте конфигурационный файл сервера метрик:
kubectl edit configmap metrics-server-config \ --namespace=kube-system \ --output=yaml
-
Добавьте или измените параметры ресурсов в блоке
data.NannyConfiguration
:apiVersion: v1 data: NannyConfiguration: |- apiVersion: nannyconfig/v1alpha1 kind: NannyConfiguration baseCPU: <базовое_количество_CPU>m cpuPerNode: <количество_CPU_за_каждый_узел>m baseMemory: <базовое_количество_оперативной_памяти>Mi memoryPerNode: <количество_оперативной_памяти_за_каждый_узел>Mi ...
Пример конфигурационного файла
apiVersion: v1 data: NannyConfiguration: |- apiVersion: nannyconfig/v1alpha1 kind: NannyConfiguration baseCPU: 48m cpuPerNode: 1m baseMemory: 104Mi memoryPerNode: 3Mi kind: ConfigMap metadata: creationTimestamp: "2022-12-15T06:28:22Z" labels: addonmanager.kubernetes.io/mode: EnsureExists name: metrics-server-config namespace: kube-system resourceVersion: "303569" uid: 931b88ca-21da-4d04-a3c1-da7e********
-
Перезапустите сервис сервер метрик. Для этого удалите его и подождите пока контроллер Kubernetes создаст его заново:
kubectl delete deployment metrics-server \ --namespace=kube-system
Проверьте результат
Снова посмотрите количество ресурсов, выделенных для пода сервера метрик, и убедитесь, что для нового пода оно изменилось.
Сбросьте параметры сервера метрик
Чтобы сбросить параметры до значений по умолчанию, удалите конфигурационный файл сервера метрик и его Deployment:
kubectl delete configmap metrics-server-config \
--namespace=kube-system && \
kubectl delete deployment metrics-server \
--namespace=kube-system
После выполнения команд новый под сервера метрик будет создан автоматически.