Интервал проверки 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
Подробнее здесь: автоматическое масштабирование на основе памяти .