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

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

9 ответов

Решение

РЕДАКТИРОВАТЬ - июль 2018 года: см. Ответ @pedro_sland ниже, поскольку эта функция теперь реализована

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

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

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

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

С kubectl v1.10.1+ команда выглядит так:

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

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

Вы можете создать простую работу на основе вашего 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

К сожалению, ни один из приведенных выше примеров синтаксиса не работает в 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>
      kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>

вы можете использовать для удаления выполнения задания в любое время kubectl delete job <job-name> -n <namespace>

если вы хотите увидеть список доступных заданий на кукурузу, используйте kubectl get cronjobs -n <namespace>

На этой вкладке на панели инструментов k8s есть возможность запустить задание cron вручную.

См. Изображение

Если вы можете использовать инструменты помимоkubectl, интерфейс командной строки K9s — замечательный инструмент, в котором, среди прочего, есть команда триггера, позволяющая запускать cronjobs.

Для этого войдите в интерфейс K9s, найдите свои cronjobs с помощью команды:cronjobs, выберите тот, который вы хотите вызвать, и введитеt.

Под капотом это, вероятно, создаетJobиспользуяCronJobконфигурация, как предложено в этом ответе .

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

https://github.com/iJanki/kubecron

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

kubectl create -f ./job.yaml
Другие вопросы по тегам