ChatGPT解决这个技术问题 Extra ChatGPT

如何手动触发 Kubernetes 计划作业?

我创建了一个 Kubernetes Scheduled Job,它根据日程安排每天运行两次。但是,我想手动触发它以进行测试。我怎样才能做到这一点?


I
Ivan Aracki

@jdf mentioned 的问题 #47538 现在已关闭,现在可以这样做了。可以在 here 中找到原始实现,但语法已更改。

使用 kubectl v1.10.1+ 命令是:

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

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


请务必检查您的 kubectl 版本,截至 2018 年 5 月 10 日,通过 Google Cloud SDK 安装的版本没有此命令可用。 gcloud components install kubectl 然后 kubernetes.io/docs/tasks/tools/install-kubectl
它也可以在 Openshift 中使用,甚至可以在 3.11 中使用(只需将 kubectl 替换为 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”}`
如果您收到这样的错误-->在方案“k8s.io/kubectl/pkg/scheme/scheme.go:28”中为版本“batch/v1”注册了“no kind”CronJob”<--确保您的 kubectl 版本是最新的 (21+)
C
Camil

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

只是关于“删除一些不必要的字段”的小补充。 Kubernetes 抱怨 *uid 字段,您可以通过此命令轻松删除它们 sed -i '/uid:.*/d' my_job.yaml
历史上已经存在工作的假设通常不成立。
A
Andrzej Sydor

不幸的是,以上示例语法均不适用于 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 作业弹性问题非常棒,谢谢!
j
jdf

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

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

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

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


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

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

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


B
Brian Tompsett - 汤莱恩

有一个选项可以在 k8s 仪表板的此选项卡中手动触发 cron 作业

https://i.stack.imgur.com/ZvFGn.png


伟大的!这对于想要调试和使用 cronjobs 的 Minikube 用户(比如我)特别有用:)
i
iJanki

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

https://github.com/iJanki/kubecron


K
Kamran

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

kubectl create -f ./job.yaml

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅