Я создал запланированное задание Kubernetes , которое запускается два раза в день по расписанию. Однако я хотел бы запустить его вручную в целях тестирования. Как я могу это сделать?
Я создал запланированное задание Kubernetes , которое запускается два раза в день по расписанию. Однако я хотел бы запустить его вручную в целях тестирования. Как я могу это сделать?
Ответы:
Проблема № 47538, о которой упоминал @jdf, теперь закрыта, и теперь это возможно. Оригинальную реализацию можно найти здесь но синтаксис изменился.
В kubectl v1.10.1 + команда выглядит так:
kubectl 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
*uid
поля, и вы можете легко удалить их с помощью этой командыsed -i '/uid:.*/d' my_job.yaml
РЕДАКТИРОВАТЬ - июль 2018: см. Ответ @ pedro_sland, поскольку эта функция теперь реализована
Мой исходный ответ ниже останется верным для более старых версий kubectl менее v1.10.1.
================================================== ======================
Помимо создания новой работы (как предлагали другие ответы), в настоящее время нет способа сделать это. Теперь это запрос функции в kubernetes, который можно отслеживать здесь: https://github.com/kubernetes/kubernetes/issues/47538
К сожалению, ни один из приведенных выше примеров синтаксиса не работает в 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>
Я создал небольшую утилиту cmd для удобства, чтобы делать это, а также приостанавливать и отменять приостановку работы cronjobs.
На этой вкладке на панели инструментов k8s есть возможность запустить задание cron вручную.
gcloud components install kubectl
затем kubernetes.io/docs/tasks/tools/install-kubectl