【发布时间】:2017-03-17 01:19:22
【问题描述】:
我创建了一个Kubernetes Scheduled Job,它根据它的时间表每天运行两次。但是,我想手动触发它以进行测试。我该怎么做?
【问题讨论】:
标签: scheduled-tasks kubernetes google-kubernetes-engine
我创建了一个Kubernetes Scheduled Job,它根据它的时间表每天运行两次。但是,我想手动触发它以进行测试。我该怎么做?
【问题讨论】:
标签: scheduled-tasks kubernetes google-kubernetes-engine
@jdf mentioned 的问题 #47538 现已关闭,现在可以这样做。可以在here 找到原始实现,但语法已更改。
使用 kubectl v1.10.1+ 的命令是:
kubectl create job --from=cronjob/<cronjob-name> <job-name>
它似乎向后兼容旧集群,因为它在 v0.8.x 上对我有用。
【讨论】:
gcloud components install kubectl 然后kubernetes.io/docs/tasks/tools/install-kubectl
kubectl 替换为 oc)。
kubectl [oc] delete job <job-name>
error: unknown object type *v1beta1.CronJob`> kubectl version Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit: “b695d79d4f967c403a96986f1750a35eb75e75f1”,GitTreeState:“clean”,BuildDate:“2021-11-17T15:48:33Z”,GoVersion:“go1.16.10”,编译器:“gc”,平台:“darwin/amd64”}`
您可以根据自己的 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
很遗憾,以上示例语法均不适用于 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>
【讨论】:
编辑 - 2018 年 7 月:请参阅 @pedro_sland 的 answer,因为此功能现已实施
对于低于 v1.10.1 的旧版本 kubectl,我在下面的原始答案仍然正确
================================================ ==========================
除了创建一个新工作(正如其他答案所建议的那样),目前没有办法做到这一点。现在可以在此处跟踪 kubernetes 中的功能请求:https://github.com/kubernetes/kubernetes/issues/47538
【讨论】:
在 k8s 仪表板的这个选项卡中,有一个选项可以手动触发 cron 作业
【讨论】:
为了方便起见,我创建了一个小型 cmd 实用程序,还可以暂停和取消暂停 cronjobs。
【讨论】:
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
您可以随时使用kubectl delete job <job-name> -n <namespace>删除作业执行
如果您想查看可用的玉米工作列表,请使用kubectl get cronjobs -n <namespace>
【讨论】: