GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Рейтинг: 65.3% · 58 голосов
AWS, Google Cloud Platform, Microsoft Azure, Cloudflare, Hetzner: облачные сервисы, архитектура, serverless, стоимость и миграция в облако.
Аватара пользователя
alansmit
Сообщения: 84
Зарегистрирован: 13 май 2026, 00:35

GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение alansmit »

Перевели часть воркеров на spot node pool в GKE, экономия ~70% и это кайф. Но иногда при превентинге ноды под убивается грязно и in-flight сообщение из очереди теряется. terminationGracePeriodSeconds стоит 60, думал хватит.
👍 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — grumpylurker
Добавлю момент, который тут не прозвучал: spot-нода умирает не только по preemption. Бывает ещё scale-down автоскейлера и апгрейд пула, и тайминги там другие. Поэтому логику завершения стоит писать одну универсальную: поймали SIGTERM — закрыли приём новых сообщений, доедаем in-flight с жёстким дедлайном, что не успели — nack и пусть возвращается в очередь. Тогда вообще без разницы, почему нода…
Перейти к ответу →
Аватара пользователя
Kutz
Сообщения: 71
Зарегистрирован: 16 май 2026, 02:21

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение Kutz »

В том и засада: на споте у тебя всего 30 секунд после preemption notice, твои 60 ничего не значат. И из этих 30 на твои поды реально приходится секунд 15-20, остальное кубелет и системные поды забирают. Ставь grace period 25 максимум и закладывайся на это.
👍 ❤️1 🔥 😄 🤔
Аватара пользователя
johnmal
Сообщения: 22
Зарегистрирован: 21 май 2026, 18:40

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение johnmal »

@Kutz вот про эти 30 секунд я не знал, думал grace period это и есть лимит. То есть нет смысла ставить больше 25-ти вообще?
👍4 ❤️1 🔥 😄1 🤔1
Аватара пользователя
lost300z
Сообщения: 77
Зарегистрирован: 11 май 2026, 04:27

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение lost300z »

Нет смысла. Ты можешь хоть 600 поставить, нода всё равно умрёт через 30. Главное — приложение должно ловить SIGTERM, переставать брать новые сообщения и быстро доедать текущие. Если хендлер одного сообщения дольше 15 сек — ты в зоне риска by design.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
lucky1000
Сообщения: 24
Зарегистрирован: 12 май 2026, 22:45

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение lucky1000 »

Плюс не держите всё на споте. Минимальный on-demand пул под критику + tolerations чтобы остальное предпочитало spot но не требовало его. Когда GCP начинает массово отзывать спот в зоне, без fallback вы просто ляжете целиком.
👍2 ❤️ 🔥 😄1 🤔
Аватара пользователя
juniorredteam
Сообщения: 66
Зарегистрирован: 11 май 2026, 07:16

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение juniorredteam »

@lucky1000 да, у нас как раз весь пул был спотовый, на прошлой неделе в europe-west4 отозвали почти всё разом и мы минут 8 не обрабатывали очередь. Завожу on-demand baseline, спасибо.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
burnedblueteam
Сообщения: 30
Зарегистрирован: 11 май 2026, 21:39

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение burnedblueteam »

И ещё момент: SQS/Pub-Sub ack должен идти только после успешной обработки, а не на receive. Тогда даже грязная смерть пода = сообщение вернётся в очередь и переедет на живую ноду. Если у вас auto-ack — вот вам и потеря, спот тут вторичен.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
lxxyl
Сообщения: 4
Зарегистрирован: 15 май 2026, 04:31

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение lxxyl »

@Kutz вот это в точку, у нас ack стоял в начале хендлера для скорости. Перенёс в конец + сделал идемпотентность по message id. После этого даже без graceful всё ретраится корректно. Проблема была не в споте а в нашей логике, по сути.
👍 ❤️1 🔥1 😄 🤔
Аватара пользователя
grumpylurker
Сообщения: 63
Зарегистрирован: 15 май 2026, 01:41

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение grumpylurker »

✔ Лучший ответ — сформирован автоматически
Добавлю момент, который тут не прозвучал: spot-нода умирает не только по preemption. Бывает ещё scale-down автоскейлера и апгрейд пула, и тайминги там другие. Поэтому логику завершения стоит писать одну универсальную: поймали SIGTERM — закрыли приём новых сообщений, доедаем in-flight с жёстким дедлайном, что не успели — nack и пусть возвращается в очередь. Тогда вообще без разницы, почему нода уходит.
👍 ❤️1 🔥 😄 🤔1
Аватара пользователя
vemina
Сообщения: 33
Зарегистрирован: 11 май 2026, 09:54

Re: GKE на Spot-нодах: поды убивает раньше чем они успевают завершиться, теряем сообщения. Как победить?

Сообщение vemina »

@lost300z, про «хендлер дольше 15 сек — зона риска by design» уточню: иногда длинную обработку не распилить — видео-транскод, тяжёлый отчёт. Для таких мы делали чекпоинты прогресса в базу и возобновление с места падения, а сами воркеры прибили nodeSelector'ом к on-demand пулу. Спот — только для того, что гарантированно укладывается в окно.
👍2 ❤️ 🔥2 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Облачные платформы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость