Kubernetes PodDisruptionBudget, HorizontalPodAutoscaler & RollingUpdate Взаимодействие? - PullRequest
0 голосов
/ 27 февраля 2019

Если у меня есть следующие объекты Kubernetes:

  • Deployment с rollingUpdate.maxUnavailable, установленным на 1.
  • PodDisruptionBudget с maxUnavailable, установленным на 1.
  • HorizontalPodAutoscaler настройка для автоматического масштабирования.
  • Автоматическое масштабирование кластера включено.

Если кластер находился под нагрузкой и находится в серединемасштабирования, что происходит:

  1. Во время непрерывного обновления?Добавлены ли новые Pod из-за увеличения масштаба использования новой версии Pod?
  2. Когда необходимо перезапустить или заменить узел?PodDisruptionBudget останавливает перезапуск полностью?Может ли HorizontalPodAutoscaler увеличить число узлов перед тем, как отключить другой узел?
  3. Когда установлено сродство Pod, чтобы избежать размещения двух Pod из одного и того же Deployment на одном и том жеузел.

1 Ответ

0 голосов
/ 07 мая 2019
  1. Как и в документации :

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

Таким образом, это частично зависит от конфигурации контроллераи реализация.Я полагаю, что новые модули, добавленные автоскалером, будут использовать новую версию модуля Pod, поскольку именно эта версия присутствует в определении развертываний на этом этапе.

Это зависит от того, как вы выполните перезапуск узла.Если вы просто отключите питание, ничего не поделаешь;) Если вы правильно выполните drain перед выключением узла, то PodDisruptionBudget будет учтено, и процедура слива не нарушит его.Бюджет сбоев учитывается API Eviction, но может быть нарушен с помощью низкоуровневых операций, таких как ручное удаление модуля.Это больше похоже на предположение, что некоторые API уважают, чем предел силы, который применяется целыми Kubernetes.

Согласно официальной документации , если сходствоесли он будет «мягким», то пакеты будут в любом случае запланированы на одном и том же узле.Если это «сложно», то развертывание застрянет, и не сможет запланировать необходимое количество контейнеров.Поочередное обновление все еще будет возможно, но HPA не сможет больше наращивать пул стручков.

...