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


Answers:


187

问题#47538@jdf提到的是现在已经关闭,这是现在可能。原始实现可在此处找到但语法已更改。

使用kubectl v1.10.1 +时,命令为:

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

它在v0.8.x上为我工作时似乎与较旧的群集向后兼容。


3
请务必检查您的kubectl版本,从18/10/5开始,通过Google Cloud SDK安装的版本没有此命令。gcloud components install kubectl然后kubernetes.io/docs/tasks/tools/install-kubectl
Scott Jungwirth

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
Aleksandr Podkutin

历史上已经有工作的假设通常不成立。
Andrew Savinykh

9

编辑-2018年7月:请参阅@pedro_sland的答案,因为此功能现已实现

对于低于v1.10.1的较旧版本的kubectl,我下面的原始答案仍然正确

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

除了创建新工作(如其他答案所建议的那样)外,目前尚无此方法。现在是kubernetes的一项功能请求,可以在这里进行跟踪:https : //github.com/kubernetes/kubernetes/issues/47538


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


0

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

kubectl create -f ./job.yaml

0

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

看图片

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.