Kubernetes HPA - как избежать масштабирования для увеличения загрузки процессора - PullRequest
1 голос
/ 15 января 2020

HPA - Как избежать масштабирования для скачка загрузки ЦП (не при запуске). Когда бизнес-конфигурация загружается для другой страны, загрузка ЦП увеличивается в течение 1 минуты, но мы хотим избежать увеличения в течение 1 минуты.

ниже pi c, CurrentMetricValue - это просто текущее значение из матрицы или среднее значение от последнего опроса до продолжительности текущего опроса - horizont.-pod-autoscaler-syn c -period

enter image description here

1 Ответ

1 голос
/ 15 января 2020

Интервал проверки HPA по умолчанию составляет 30 секунд. Это может быть настроено через, как вы упомянули, путем изменения значения флага --horizontal-pod-autoscaler-sync-period диспетчера контроллеров.

Горизонтальный автоподкачщик реализован как элемент управления l oop с периодом, контролируемым диспетчером контроллеров. --horizont-pod-autoscaler-syn c -period флаг.

В течение каждого периода диспетчер контроллера запрашивает использование ресурсов по метрикам, указанным в каждом определении HorizontalPodAutoscaler. Диспетчер контроллеров получает метрики либо из API метрик ресурсов (для метрик ресурсов для каждого модуля), либо из пользовательского API метрик (для всех других метрик).

Для изменения / добавления флагов в kube-controller -manager - вы должны иметь доступ к каталогу /etc/kubernetes/manifests/ на главном узле и иметь возможность изменять параметры в /etc/kubernetes/manifests/kube-controller-manager.yam l.

Примечание: вы не можете сделать это на GKE, EKS и других управляемых кластерах .

Более того, я рекомендую увеличить --horizontal-pod-autoscaler-downscale-stabilization (замена --horizontal-pod-autoscaler-upscale-delay).

Если вы беспокоитесь о длительных сбоях, я бы порекомендовал настроить пользовательский показатель c. (1, если сеть была отключена в последнем ${duration}, 0 в противном случае) и установка целевого значения metri c в 1 (в дополнение к автоматическому масштабированию на базе процессора). Таким образом:

Если сеть не работала, последняя рекомендация ${duration} на основе пользовательского показателя c будет равна текущему размеру вашего развертывания. Максимум этой рекомендации и очень низкая рекомендация ЦП будут равны текущему размеру развертывания. Уменьшения масштаба не будет, пока не будет восстановлено подключение (+ через несколько минут после этого из-за окна стабилизации уменьшения масштаба).

Если сеть доступна, рекомендация на основе показателя c будет равна 0. Макс. с рекомендацией процессора это будет равно рекомендации процессора, и автоскалер будет работать нормально. Я думаю, что это решает вашу проблему лучше, чем ограничение размера шага автомасштабирования. Ограничение размера шага автоматического масштабирования будет только замедлять скорость, с которой уменьшается количество модулей, поэтому более длительное отключение сети по-прежнему приведет к сокращению развертывания до минимально допустимого размера.

Вы также можете использовать масштабирование на основе памяти

Поскольку в Kubernetes невозможно создать hpa на основе памяти, для достижения этого был написан сценарий. Вы можете найти наш скрипт здесь, нажав на эту ссылку:

https://github.com/powerupcloud/kubernetes-1/blob/master/memory-based-autoscaling.sh

Клонировать репозиторий:

https://github.com/powerupcloud/kubernetes-1.git

, а затем go в каталог Kubernetes. Выполните команду справки, чтобы получить инструкции:

./memory-based-autoscaling.sh --help

Подробнее здесь: автоматическое масштабирование на основе памяти .

...