Kubernetes HPA - как избежать увеличения загрузки ЦП

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

ниже рис. CurrentMetricValue - это просто текущее значение из матрицы или среднее значение от последнего опроса до текущей продолжительности опроса --horizontal.-pod-autoscaler-sync-period

введите здесь описание изображения


person Sandip Jadhav    schedule 15.01.2020    source источник


Ответы (1)


Интервал проверки 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.yaml.

Примечание: вы не можете сделать это в 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
comment
Спасибо @MaggieO - person Sandip Jadhav; 03.02.2020
comment
Если это поможет, не могли бы вы проголосовать за и принять мой ответ. Буду полезен будущему сообществу. - person Malgorzata; 04.02.2020
comment
Согласно официальному документу --horizontal-pod-autoscaler-sync-period это 15 секунд, а не 30 секунд - person Mouna; 31.03.2020