Как я могу запустить запланированное задание 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, чтобы сделать это, а также приостановить и отменить приостановку работы.