Интервал проверки HPA по умолчанию составляет 30 секунд. Это можно настроить с помощью, как вы упомянули, путем изменения значения флага --horizontal-pod-autoscaler-sync-period
диспетчера контроллеров.
Автоматическое масштабирование горизонтальных модулей реализовано в виде контура управления, период которого контролируется флагом диспетчера контроллеров --horizontal-pod-autoscaler-sync-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
).
Если вас беспокоят длительные перерывы в работе, я бы порекомендовал настроить пользовательскую метрику (1, если сеть была отключена в последний ${duration}
, 0 в противном случае) и установить целевое значение метрики на 1 (в дополнение к автоматическому масштабированию на базе ЦП). Сюда:
Если сеть была отключена в последней ${duration}
рекомендации на основе настраиваемой метрики, она будет равна текущему размеру вашего развертывания. Максимальное количество этой рекомендации и очень низкая рекомендация ЦП будут равны текущему размеру развертывания. Уменьшения масштаба не будет, пока соединение не будет восстановлено (+ несколько минут после этого из-за окна стабилизации уменьшения масштаба).
Если сеть доступна, рекомендация, основанная на метрике, будет равна 0. Максимально с рекомендацией ЦП, она будет равна рекомендации ЦП, и автомасштабирование будет работать нормально. Я думаю, что это решает вашу проблему лучше, чем ограничение размера шага автомасштабирования. Ограничение размера шага автомасштабирования только замедлит скорость, с которой уменьшается количество модулей, поэтому более длительное отключение сети все равно приведет к сокращению вашего развертывания до минимально допустимого размера.
Вы также можете использовать масштабирование на основе памяти
Поскольку в Kubernetes невозможно создать hpa на основе памяти, для этого был написан сценарий. Вы можете найти наш скрипт здесь, перейдя по этой ссылке:
https://github.com/powerupcloud/kubernetes-1/blob/master/memory-based-autoscaling.sh
Клонируем репозиторий:
https://github.com/powerupcloud/kubernetes-1.git
а затем перейдите в каталог Kubernetes. Выполните команду справки, чтобы получить инструкции:
./memory-based-autoscaling.sh --help
Подробнее здесь: автоматическое масштабирование на основе памяти.
person
Malgorzata
schedule
15.01.2020