#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/