сценария. Есть кластер, на нем есть группа нодов состоящая из spot instances (провайдер может в любое время отключить ноду с 2ух минутным предупреждением). На спот нодах запущен SS для которого я хочу минимизировать даунтайм. Поды в этом SS требуют небольшое время на разогрев (пул докер образ плюс небольшое время для разогрева бизнес логики приложения). Примерный алгоритм обработки прерывания:
- При получении spot interruption event от провайдера закордонить ноду, но не дрейнить, оставить поды работать
- Запросить новый спот инстанс
- Т.к. нагрузка stateful, заскедулить поды с стейтом как у закордоненой ноды (как?), дать им разогреться но не начать исполнение бизнес логики приложения (опять таки как?). Я знаю что есть readiness probe/startup probe, возможно это как-то прикрутить?
- Как только все поды на новой ноде разогреты, задрейнить закордоненную ноду, при этом при отключении пода сразу же ставить флаг для соответсвующего пода на новой ноде что он может начать работать.
Вопрос, есть ли существующие решения для этого? Если нет, как это сделать? Писать свой контроллер? Если есть релевантные ссылки буду благодарен!
k8s, stateful set, high available, spot instances Набор тегов, который почти всегда гарантирует боль =)
Надеюсь, двух минут тебе хватит. > При получении spot interruption event от провайдера закордонить ноду, но не дрейнить, оставить поды работать
Обсуждают сегодня