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

Ответы:

190

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

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

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

Похоже, он обратно совместим со старыми кластерами, поскольку у меня он работал на v0.8.x.

pedro_sland
источник
3
Обязательно проверьте свою версию kubectl, по состоянию на 10.05.18 в версии, установленной с помощью Google Cloud SDK, эта команда недоступна. gcloud components install kubectlзатем kubernetes.io/docs/tasks/tools/install-kubectl
Скотт Юнгвирт
18

Вы можете создать простое задание на основе вашего 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
Камил
источник
1
Просто небольшое дополнение про «стирание ненужных полей». Kubernetes жалуется на *uidполя, и вы можете легко удалить их с помощью этой командыsed -i '/uid:.*/d' my_job.yaml
Александр Подкутин
Предположение о том, что в истории уже есть рабочие места, часто не выполняется.
Андрей Савиных
9

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

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

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

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

jdf
источник
7

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

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

kubectl create job <your-new-job-name> --from=cronjob/<name-of-deployed-cron-job> -n <target namespace>
Джозеф похоть
источник
замечательно устранять проблемы с отказоустойчивостью заданий cron, спасибо!
lauksas
3

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

https://github.com/iJanki/kubecron

iJanki
источник
0

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

kubectl create -f ./job.yaml
Камран
источник
0

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

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

Борха Гарсия
источник