Kubernetes - запускать задание после готовности пода

Я в основном ищу механику, подобную для инициализации контейнеров с оговоркой, что я хочу, чтобы она запускалась после того, как под готов (например, отвечает на readinessProbe). Есть ли какие-нибудь хуки, которые можно применить к readinessProbe, чтобы он мог запускать задание после первого успешного зондирования?

заранее спасибо

3 ответа

Вы можете использовать какой-нибудь крючок короткого жизненного цикла для pod или, скажем, контейнера.

например

lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo In postStart > /dev/termination-log"]

это postStart хук, поэтому я думаю, что он сработает.

Но Post hook - это асинхронная функция, поэтому, как только контейнер будет запущен, он может быть запущен когда-нибудь до точки входа контейнера, который он запускает.

Поправьте меня, если я ошибаюсь, но вы хотите запустить задание, когда контейнер будет готов.

Когда вы определяете задание, оно будет запущено, когда контейнер будет готов. Что именно вы пытаетесь выполнить?

Я не думаю, что в vanilla k8s есть что-то, что могло бы достичь этого прямо сейчас. Однако есть 2 варианта:

  1. Если можно повторить задачу инициализации несколько раз до тех пор, пока она не будет успешной, я бы просто запустил задачу как задание одновременно с модулем, который вы хотите инициализировать. Это самый простой вариант, но он может быть немного медленным из-за экспоненциальной задержки.

  2. Если критически важно, чтобы задача инициализации запускалась только после того, как модуль будет готов, или если вы хотите, чтобы задача не тратила время на сбой и откатывание несколько раз, вы все равно должны запускать эту задачу как задание, но на этот раз пусть она следит за модулем. рассматриваемый, используя k8s api, и выполнить задачу, как только pod будет готов.

Другие вопросы по тегам