Kubernetes - запускать задание после готовности пода
Я в основном ищу механику, подобную для инициализации контейнеров с оговоркой, что я хочу, чтобы она запускалась после того, как под готов (например, отвечает на readinessProbe). Есть ли какие-нибудь хуки, которые можно применить к readinessProbe, чтобы он мог запускать задание после первого успешного зондирования?
заранее спасибо
3 ответа
Вы можете использовать какой-нибудь крючок короткого жизненного цикла для pod или, скажем, контейнера.
например
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo In postStart > /dev/termination-log"]
это postStart хук, поэтому я думаю, что он сработает.
Но Post hook - это асинхронная функция, поэтому, как только контейнер будет запущен, он может быть запущен когда-нибудь до точки входа контейнера, который он запускает.
Поправьте меня, если я ошибаюсь, но вы хотите запустить задание, когда контейнер будет готов.
Когда вы определяете задание, оно будет запущено, когда контейнер будет готов. Что именно вы пытаетесь выполнить?
Я не думаю, что в vanilla k8s есть что-то, что могло бы достичь этого прямо сейчас. Однако есть 2 варианта:
Если можно повторить задачу инициализации несколько раз до тех пор, пока она не будет успешной, я бы просто запустил задачу как задание одновременно с модулем, который вы хотите инициализировать. Это самый простой вариант, но он может быть немного медленным из-за экспоненциальной задержки.
Если критически важно, чтобы задача инициализации запускалась только после того, как модуль будет готов, или если вы хотите, чтобы задача не тратила время на сбой и откатывание несколько раз, вы все равно должны запускать эту задачу как задание, но на этот раз пусть она следит за модулем. рассматриваемый, используя k8s api, и выполнить задачу, как только pod будет готов.