Ресурс Kubernetes Job
Ресурс Kubernetes Job
Задания (Job) применяются для нерегулярных задач, где важно, чтобы задача закончилась правильно. Примером такого задания может служить хранение данных в каком-либо месте, а также их преобразование и экспорт.
Для определения ресурса Job создайте манифест ресурса Job:
apiVersion: batch/v1
kind: Job
metadata:
name: batch-job
spec:
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
– name: main
image: vasya/batch-job
Задания являются частью группы API batch и версии API v1. YAML определяет ресурс c типом Job, который будет выполнять образ vasya/batch-job. Этот образ вызывает процесс, который выполняется ровно 120 секунд, а затем заканчивается.
В секции спецификации модуля можно указать, что следует делать системе Kubernetes после завершения процессов, запущенных в контейнере. Это указывается restartPolicy в секции spec модуля, которое по умолчанию, в других случаях, равняется Always. Модули Job не могут использовать принятую по умолчанию, поскольку они не предназначены для неограниченного применения. Поэтому, необходимо явно задать политику перезапуска OnFailure или Never. Указанная настройка предотвращает перезапуск контейнера после окончания его работы.
Запуск создания ресурса Job из манифеста YAML: $ kubectl create -f kubia-rc.yaml
Получить информацию о запущенных ресурса Job: $ kubectl get jobs
Показать запущенные модули: $ kubectl get po
Показать отработавшие модули: $ kubectl get po —show-all (или -a)
Посмотреть протокол операций отработавшего модуля: $ kubectl logs batch-job-name
Чтобы задание выполнялось более одного раза, то необходимо отразить это в значении completions:
apiVersion: batch/v1
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
– name: main
image: vasya/batch-job
Это задание будет выполнять пять модулей один за другим. Сначала оно создает один модуль, а когда контейнер модуля заканчивается, он создает второй модуль и т. д. до тех пор, пока пять модулей не завершатся успешно.
Для выполнения задания несколькими модулями параллельно, используется свойства parallelism в секции spec ресурса Job:
apiVersion: batch/v1
kind: Job
metadata:
name: multi-completion-batch-job
spec:
completions: 5
parallelism: 2
template:
metadata:
labels:
app: batch-job
spec:
restartPolicy: OnFailure
containers:
– name: main
image: vasya/batch-job
Масштабирование задания
Масштабировать задание можно изменив свойство parallelism ресурса Job или командой kubectl scale:
$ kubectl scale job multi-completion-batch-job --replicas 3
Задания CronJob в Kubernetes
Cron-задание в Kubernetes конфигурируется путем создания ресурсаCronJob. В настроенное время Kubernetes создаст ресурс Job в соответствии с шаблоном задания, настроенным в объекте CronJob. При создании ресурса Job будут созданы одна или несколько реплик модуля и запущены в соответствии с шаблоном модуля ресурса Job.
Чтобы создать ресурс CronJob, например для запуска пакетного задания, создайте YAML cronjob.yaml со следующим содержимым:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: batch-job-every-15-minutes
spec:
schedule: "0,15,30,45 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: periodic-batch-job
spec:
restartPolicy: OnFailure
containers:
– name: main
image: vasya/batch-job
Значения «0,15,30,45 * * * *» означает, что на отметке в 0, 15, 30 и 45 минут каждого часа (первая звездочка), каждого дня месяца (вторая звездочка), каждого месяца (третья звездочка) и каждого дня недели (четвертая звездочка) будет запускаться задание каждые 15 минут.
Ресурс CronJob создает ресурсы Job из свойства jobTemplate, настраиваемого в секции spec ресурса CronJob.
Нужен хороший принтер? Выбирай лазерные принтеры brother!
0