我创建了一个 Kubernetes Scheduled Job,它根据日程安排每天运行两次。但是,我想手动触发它以进行测试。我怎样才能做到这一点?
@jdf mentioned 的问题 #47538 现在已关闭,现在可以这样做了。可以在 here 中找到原始实现,但语法已更改。
使用 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
不幸的是,以上示例语法均不适用于 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
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
您可以随时使用 删除作业执行kubectl delete job <job-name> -n <namespace>
如果您想查看可用的玉米工作列表,请使用 kubectl get cronjobs -n <namespace>
有一个选项可以在 k8s 仪表板的此选项卡中手动触发 cron 作业
https://i.stack.imgur.com/ZvFGn.png
gcloud components install kubectl
然后 kubernetes.io/docs/tasks/tools/install-kubectlkubectl
替换为oc
)。kubectl [oc] delete job <job-name>
error: unknown object type *v1beta1.CronJob
` > kubectl 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”}`