Последовательное обновление для достижения нулевого времени простоя вертикального автомасштабирования модулей в Kubernetes
Kubernetes
Мой вопрос в том, что если при развертывании модуля выполняется
Спасибо.
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
поле. Вы можете настроить эту переменную, чтобы добиться нулевого времени простоя.
Ссылка: