Как я могу запускать запланированное задание Kubernetes вручную?

Я создал Запланированное задание Kubernetes, которое выполняется два раза в день в соответствии с его графиком. Однако я хотел бы запустить его вручную для тестирования. Как я могу это сделать?

Ответ 1

Проблема # 47538 о том, что @jdf упоминал, теперь закрыта, и теперь это возможно. Исходную реализацию можно найти здесь, но синтаксис изменился.

В kubectl v1.10. 1+ команда выглядит так:

kubectl create job --from=cronjob/<cronjob-name> <job-name>

Кажется, что он обратно совместим со старыми кластерами, так как он работал для меня на v0.8.x.

Ответ 2

Вы можете создать простую работу на основе вашего ScheduledJob. Если вы уже запускаете ScheduledJob, в истории есть задания.

kubectl get jobs

NAME               DESIRED   SUCCESSFUL   AGE
hello-1477281595   1         1            11m
hello-1553106750   1         1            12m
hello-1553237822   1         1            9m

Экспортируйте одно из этих заданий:

kubectl get job hello-1477281595 -o yaml > my_job.yaml

Затем немного измените yaml, удалив ненужные поля и запустив их вручную:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml

Ответ 3

ОБНОВЛЕНИЕ - июль 2018 года: см. @Pedro_sland answer, поскольку эта функция теперь реализована

Мой оригинальный ответ ниже останется верным для более старых версий kubectl менее v1.10.1

================================================== ======================

Помимо создания новой работы (как предложили другие ответы), в настоящее время нет способа сделать это. Это запрос функции в kubernetes теперь, который можно отследить здесь: https://github.com/kubernetes/kubernetes/issues/47538

Ответ 4

К сожалению, ни один из приведенных выше примеров синтаксиса не работает в Google Kubernetes Engine (GCP). Кроме того, сами документы GKE неверны. :(

В Кубернетесе 1.10.6.gke-2 рабочий синтаксис:

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>

Ответ 5

Я создал небольшую утилиту cmd для удобства сделать это, а также приостановить и отключить cronjobs.

https://github.com/iJanki/kubecron

Ответ 6

Если вы хотите протестировать задание, создайте Job config из Cron Job (ScheduledJob) и запустите его вручную, используя следующую команду:

kubectl create -f ./job.yaml