Как работает масштабирование реплики pod в Kubernetes Horizontal Pod Autoscaler? - PullRequest
0 голосов
/ 28 апреля 2018

Насколько я понимаю, в Kubernetes, если использовать горизонтальный модуль автоматического масштабирования, если для поля targetCPUUtilizationPercentage установлено значение 50%, а среднее использование ЦП для всех реплик модуля выше этого значения, HPA создаст больше реплик. , Если в течение некоторого времени средний процессор упадет ниже 50%, это уменьшит количество реплик.

Вот часть, в которой я не уверен:
Что если загрузка ЦП в модуле составляет 10%, а не 0%? Будет ли HPA по-прежнему прерывать реплику?
10% ЦП не так много, но, поскольку он не равен 0%, в настоящий момент выполняется какая-то задача этот стручок Если это длительная задача (несколько секунд) и HPA решает прекратить работу модуля, эта задача не будет завершена.

Разрешает ли HPA блокировать модули только в том случае, если загрузка ЦП на них составляет 0%, или он завершает их всякий раз, когда видит, что значение ниже targetCPUUtilizationPercentage?

Как HPA решает, какие стручки удалить?
Спасибо!

1 Ответ

0 голосов
/ 29 апреля 2018

Итак, у вас есть два вопроса, и позвольте мне ответить один на один. Первая часть - если модуль в наборе реплик потребляет, скажем, 10%, тогда Kubernetes убьет этот модуль? Ответ - да. Кубернетес смотрит не на отдельные модули, а на среднее значение этого показателя по всем модулям в этом наборе реплик. Также уменьшение является постепенным , как объяснено здесь

Вторая часть вопроса - как ваше приложение ведет себя изящно, когда модуль собирается быть убитым, и он все еще обслуживает некоторые запросы? Это может быть обработано с помощью льготного периода завершения пакета и даже лучше, если вы реализуете a PreStop hook - что позволит вам сделать что-то вроде прекращения приема входящих запросов, но обработать существующие запросы. Реализация этого будет зависеть от используемой вами среды выполнения, поэтому я не буду вдаваться в подробности.

И, наконец, один сценарий, который вы должны рассмотреть, это то, что если виртуальная машина, на которой работал модуль, внезапно выйдет из строя - у вас нет шансов выполнить перехват PreStop! Я думаю, что приложение должно быть достаточно устойчивым для обработки сбоев.

...