Выбор ответа Senior Pod и Deployment обновлено

Ошибки 502 при каждом деплое

Вопрос

При каждом rolling update пользователи получают несколько ошибок 502, хотя приложение корректно обрабатывает SIGTERM и дожидается текущих запросов. Что вероятная причина?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Удаление из эндпоинтов и SIGTERM идут параллельно; помогает preStop с паузой. Когда под удаляется, kubelet начинает остановку, а контроллер EndpointSlice убирает под из сервиса, и обновление правил на всех узлах и в Ingress занимает время.

Варианты ответа

  1. Слишком маленький maxSurge: новые поды не успевают подняться до удаления старых
  2. Kubernetes отправляет SIGKILL вместо SIGTERM, если у пода нет preStop
  3. Неверный revisionHistoryLimit: старый ReplicaSet удаляется вместе с подами сразу
  4. Удаление из эндпоинтов и SIGTERM идут параллельно; помогает preStop с паузойправильный ответ

Разбор

Когда под удаляется, kubelet начинает остановку, а контроллер EndpointSlice убирает под из сервиса, и обновление правил на всех узлах и в Ingress занимает время. Если приложение сразу перестаёт принимать соединения, запросы в этом окне падают. Типичное решение: preStop со sleep на несколько секунд и продолжение обслуживания до конца паузы. SIGKILL приходит только после terminationGracePeriodSeconds.

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

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

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