Как Deployment выполняет обновление и как откатить неудачную версию?
- Что такое maxSurge и maxUnavailable?
- Как сделать выкатку без простоя в Kubernetes?
Стратегия по умолчанию — RollingUpdate: создаётся новый ReplicaSet, поды постепенно заменяются. maxSurge — сколько подов сверх нужного числа можно поднять, maxUnavailable — сколько можно потерять во время обновления. Новый под получает трафик только после readiness. Откат: kubectl rollout undo deployment/orders — возвращается предыдущий ReplicaSet (хранятся revisionHistoryLimit ревизий).
- maxUnavailable: 0 и maxSurge: 1 — обновление без снижения ёмкости
- Без readiness-пробы трафик пойдёт в неготовые поды — ошибки при каждой выкатке
- progressDeadlineSeconds — когда признать выкатку зависшей
А ещё Старая и новая версии работают одновременно — API и схема БД должны быть совместимы
Подробно
Ход выкатки (3 реплики, maxSurge 1, maxUnavailable 0):
- Поднимается 1 новый под, ждём readiness.
- Удаляется 1 старый.
- Повторяется, пока все поды не станут новыми.
Команды:
kubectl set image deployment/orders app=orders:1.4.3
kubectl rollout status deployment/orders
kubectl rollout history deployment/orders
kubectl rollout undo deployment/orders --to-revision=4
Ограничения rolling update: нет автоматического отката по метрикам ошибок, трафик переключается пропорционально числу подов. Для canary и автоматического анализа используют Argo Rollouts или Flagger.
Стратегия Recreate — убить все старые, потом поднять новые: простой, но нужна, когда две версии одновременно работать не могут.
Откат в GitOps делается откатом коммита в репозитории конфигурации, иначе контроллер вернёт «сломанное» желаемое состояние.
Что хотят услышать
- Механика RollingUpdate, maxSurge и maxUnavailable.
- Роль readiness.
- Откат и ограничения стратегии.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗RollingUpdate сразу удаляет все старые поды и только потом создаёт новые с нуля
- ✗Откат возможен только пересборкой и повторной выкаткой образа
- ✓Поды заменяются постепенно; откат — kubectl rollout undo
- ✗Новый под получает трафик сразу после создания, без проверок
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.