如何手动触发Kubernetes预定作业?

时间:2016-11-03 12:42:10

标签: scheduled-tasks kubernetes google-kubernetes-engine

我创建了一个Kubernetes Scheduled Job,根据其时间表每天运行两次。但是,我想手动触发它以进行测试。我怎么能这样做?

8 个答案:

答案 0 :(得分:96)

@jdf提到的问题#47538现已关闭,现在可以实现。可以找到原始实现here,但语法已更改。

使用kubectl v1.10.1 +命令为:

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

它似乎与旧版集群向后兼容,因为它在v0.8.x上对我有效。

答案 1 :(得分:14)

您可以根据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

答案 2 :(得分:9)

编辑 - 2018年7月:请参阅@ pedro_sland&#39; s answer,因为此功能现已实施

对于旧版本的kubectl低于v1.10.1

,我的原始答案将保持正确

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

除了创建新工作(正如其他答案所建议的那样),目前还没有办法做到这一点。现在可以在此处跟踪kubernetes的功能请求:https://github.com/kubernetes/kubernetes/issues/47538

答案 3 :(得分:4)

不幸的是,以上示例语法都无法在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>

答案 4 :(得分:4)

在k8s信息中心的此标签中,有一个选项可以手动触发cron作业

See image

答案 5 :(得分:3)

为了方便起见,我创建了一个小的cmd实用程序,并暂停和取消暂停cronjobs。

https://github.com/iJanki/kubecron

答案 6 :(得分:1)

如果要测试作业,请从Job(ScheduledJob)配置创建Cron Job配置,并使用以下命令手动运行:

kubectl create -f ./job.yaml

答案 7 :(得分:0)

kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>

您可以随时使用 删除作业执行kubectl delete job <job-name> -n <namespace>

如果您想查看可用的玉米工作列表,请使用 kubectl get cronjobs -n <namespace>

相关问题