Ошибки 502 при каждом деплое
Вопрос
При каждом rolling update пользователи получают несколько ошибок 502, хотя приложение корректно обрабатывает SIGTERM и дожидается текущих запросов. Что вероятная причина?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Слишком маленький
maxSurge: новые поды не успевают подняться до удаления старых - Kubernetes отправляет SIGKILL вместо SIGTERM, если у пода нет
preStop - Неверный
revisionHistoryLimit: старый ReplicaSet удаляется вместе с подами сразу - Удаление из эндпоинтов и SIGTERM идут параллельно; помогает
preStopс паузойправильный ответ
Разбор
Когда под удаляется, kubelet начинает остановку, а контроллер EndpointSlice убирает под из сервиса, и обновление правил на всех узлах и в Ingress занимает время. Если приложение сразу перестаёт принимать соединения, запросы в этом окне падают. Типичное решение: preStop со sleep на несколько секунд и продолжение обслуживания до конца паузы. SIGKILL приходит только после terminationGracePeriodSeconds.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.