Предотвратите перезапуск контейнера в модуле после успешного выполнения задания

#kubernetes #kubectl

Вопрос:

У меня в модуле есть несколько контейнеров, которые выполняют определенные задачи. Два контейнера действуют как демоны, и если они выходят из строя, их следует перезапустить. С другой стороны, 3 других контейнера предназначены для выполнения определенных задач только один раз.

Мой интуитивный подход состоял в том, чтобы заставить их явно выйти, exit 0 но это, похоже, не мешает им перезапускаться и выполнять работу снова и снова. Как мне следует действовать?

Комментарии:

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

Ответ №1:

решение № 1

Предполагая, что вы используете какой-то менеджер пакетов для развертывания k8s. Вы можете использовать аналогичную функцию, такую как крючки для руля https://helm.sh/docs/topics/charts_hooks/ для выполнения конкретных задач в определенном жизненном цикле модулей.

решение № 2

Вы можете настроить политику перезапуска для этих контейнеров, чтобы никогда, как описано здесь https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy

решение № 3

В зависимости от ваших требований вы также можете использовать обработчики жизненного цикла модуля, как описано здесь, для выполнения заданий:

https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/