Jobs в Kubernetes для временных контейнеров

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

kubernetesjobsdocker

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

📝 Один из удобных способов решения этой задачи — использовать Kubernetes Jobs с контейнерами. Пример, который будет выполнять команду внутри контейнера на основе Docker-образа:

apiVersion: batch/v1
kind: Job
metadata:
  name: temp-job
spec:
  template:
    spec:
      containers:
      - name: temp-container
        image: python:3.9
        command: ["python", "-c", "print('Hello from a temporary container!')"]
      restartPolicy: Never
  backoffLimit: 4

📌 Важные моменты:

  • command запускает Python в контейнере для выполнения простой команды
  • restartPolicy: Never гарантирует, что контейнер не будет перезапущен после завершения работы
  • backoffLimit: 4 определяет, сколько раз Kubernetes будет пытаться перезапустить контейнер, если задача не удалась (например, из-за ошибок)

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

❗️ Такой подход позволяет интегрировать временные задачи в существующий CI/CD pipeline без лишних сложностей и вмешательства в основную инфраструктуру.

tags: #docker #k8s #devops

❤️ @recura_tech

Скриншот: пример манифеста Kubernetes Job в тёмной теме с указанием контейнера python:3.9 и командой для одноразового выполнения в контейнере.
Пример YAML Job для запуска временного контейнера в Kubernetes (скриншот кода).

Читайте так же