Последовательное обновление для достижения нулевого времени простоя вертикального автомасштабирования модулей в Kubernetes

Kubernetes (автоматическое масштабирование памяти, ресурсы ЦП модулей) требует перезапуска модуля, чтобы иметь возможность использовать вновь назначенные ресурсы, что может добавить небольшое окно недоступности.

Мой вопрос в том, что если при развертывании модуля выполняется это обеспечит нулевое время простоя и нулевое окно недоступности при применении рекомендации VPA.

Спасибо.

2 ответа

Из официальной документации :

Последовательные обновления позволяют выполнять обновление развертываний с нулевым временем простоя за счет постепенного обновления экземпляров Pods новыми. Новые модули будут запланированы на узлах с доступными ресурсами.

В этой документации вы найдете очень хороший обзор непрерывных обновлений:

Последовательные обновления позволяют выполнять следующие действия:

  • Продвигайте приложение из одной среды в другую (через обновления образа контейнера)
  • Откат к предыдущим версиям
  • Непрерывная интеграция и непрерывная доставка приложений с нулевым временем простоя

Здесь вы можете найти информацию о развертывании скользящего обновления :

Развертывание обновляет модули в режиме непрерывного обновления, когда .spec.strategy.type==RollingUpdate. Вы можете указать и контролировать процесс последовательного обновления.

Дополнительно вы можете добавить еще 2 поля: Max Unavailable и Max Surge .

.spec.strategy.rollingUpdate.maxUnavailable - необязательное поле, указывающее максимальное количество модулей, которые могут быть недоступны в процессе обновления.

.spec.strategy.rollingUpdate.maxSurge - необязательное поле, в котором указывается максимальное количество модулей, которое может быть создано из желаемого количества модулей.

Теперь вам решать, как установить эти значения. Вот несколько вариантов:

  • Разверните, добавив Pod, а затем удалите старый: = 1, = 0. С этой конфигурацией Kubernetes запустит дополнительный Pod, а затем остановит «старый».
  • Разверните, удалив Pod, а затем добавив новый: = 0, = 1. В этом случае Kubernetes сначала остановит Pod перед запуском нового.
  • Разверните, обновив поды как можно быстрее: maxSurge = 1, maxUnavailable = 1. Эта конфигурация значительно сокращает время, необходимое для переключения между версиями приложения, но сочетает в себе недостатки обеих предыдущих версий.

Смотрите также:

Да. Поведение RollingUpdate по умолчанию для развертывания должно делать это автоматически. Сначала появляются новые реплики, а затем удаляются старые реплики, когда новые будут готовы. Вы можете контролировать, сколько модулей может быть недоступно одновременно или сколько новых модулей будет создано с помощью maxUnavailable а также maxSurgeполе. Вы можете настроить эту переменную, чтобы добиться нулевого времени простоя.

Ссылка:

Другие вопросы по тегам