Мне нужно запускать модули kubernetes в такой последовательности, как pod2 должен запускаться только тогда, когда pod1 запущен и работает.
мы можем сделать это в docker-compose.yml
, используя depends_on
Мне нужно запускать модули kubernetes в такой последовательности, как pod2 должен запускаться только тогда, когда pod1 запущен и работает.
мы можем сделать это в docker-compose.yml
, используя depends_on
Нет, нет встроенного управления зависимостями, эквивалентного depends_on
. Как правило, мы предполагаем слабосвязанные сервисы, и в качестве хорошей практики не должно быть жесткой зависимости с точки зрения порядка запуска, но следует использовать повторные попытки и тайм-ауты. Если вам нужно жестко закодировать зависимости, вы можете использовать контейнеры инициализации. В вашем случае контейнер инициализации в pod2
может просто запросить, готов ли pod1
(или лучше: служба перед ним) в цикле while. Основной контейнер в pod2
гарантированно будет запущен только в том случае, если и когда контейнер инициализации успешно завершится.
Не существует прямого эквивалента зависимости с примитивами Kubernetes, в качестве обходного пути вы можете реализовать проверку готовности, которая сделает pod2 непригодным для использования, пока не обнаружит, что pod1 запущен и работает.
Вы можете использовать этот pod-dependency-init-container
, который я создал. Это проверит, запущен ли какой-либо модуль с заданным labels
перед запуском вашего модуля.