Ответ вслух Middle Pod и Deployment спрашивают часто обновлено

Как работает rolling update

Вопрос

Расскажи, как Deployment выкатывает новую версию и как сделать это без простоя.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Когда меняется шаблон пода, Deployment создаёт новый ReplicaSet и двигает реплики между старым и новым. Темп задают maxSurge, сколько подов можно добавить сверх нормы, и maxUnavailable, сколько может отсутствовать.

Что должно прозвучать в ответе

  • Изменение `spec.template` создаёт новый ReplicaSet, старый постепенно уменьшается

  • `maxSurge` и `maxUnavailable` задают темп и запас; `maxUnavailable: 0` сохраняет ёмкость

  • Готовность определяет readiness probe: без неё неготовые поды получат трафик

  • Graceful shutdown: SIGTERM, `preStop` пауза, `terminationGracePeriodSeconds`

  • Совместимость версий: старая и новая работают одновременно, миграции обратно совместимые

  • Контроль: `rollout status`, `progressDeadlineSeconds`, откат `rollout undo`

Что могут спросить следом

  • Как сделать канареечный релиз?
  • Что будет, если новая версия не проходит readiness?
  • Как совместить rolling update и миграции базы?

Разбор

Когда меняется шаблон пода, Deployment создаёт новый ReplicaSet и двигает реплики между старым и новым. Темп задают maxSurge, сколько подов можно добавить сверх нормы, и maxUnavailable, сколько может отсутствовать. Для обновления без потери ёмкости ставят maxUnavailable: 0 и maxSurge: 1 или 25%. Ключевая часть: readiness probe. Новый под считается доступным только когда проходит проверку, и только тогда удаляется следующий старый. Если новая версия не готовится, раскатка застрянет, а после progressDeadlineSeconds Deployment получит условие о провале, и старые поды продолжат обслуживать трафик. С другой стороны нужна корректная остановка: приложение обрабатывает SIGTERM, а preStop с короткой паузой даёт балансировщикам убрать под из ротации. И важно помнить, что во время раскатки две версии работают одновременно, поэтому API и схема базы должны быть совместимы в обе стороны: сначала расширяющая миграция, потом код, потом чистка. Следить через rollout status, откатывать rollout undo.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме