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

akn*_*ds1 78 scheduled-tasks kubernetes google-kubernetes-engine

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

ped*_*and 126

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

使用kubectl v1.10.1 +命令是:

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

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

  • 它无法处理错误`错误:未知对象类型 *v1beta1.CronJob` ` &gt; kubectl 版本客户端版本:version.Info{Major:“1”,Minor:“22”,GitVersion:“v1.22.4”,GitCommit: “b695d79d4f967c403a96986f1750a35eb75e75f1”,GitTreeState:“干净”,BuildDate:“2021-11-17T15:48:33Z”,GoVersion:“go1.16.10”,编译器:“gc”,平台:“darwin/amd64”} ` (4认同)
  • 请务必检查您的kubectl版本,截至5月10日,通过Google Cloud SDK安装的版本没有此命令可用.`gcloud components安装kubectl`然后https://kubernetes.io/docs/tasks/tools/install-kubectl/ (3认同)
  • .. 逆操作是:`kubectl [oc] delete job &lt;job-name&gt;` (3认同)

red*_*red 15

kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
Run Code Online (Sandbox Code Playgroud)

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

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


Cam*_*mil 13

您可以根据ScheduledJob创建一个简单的作业.如果您已经运行了ScheduledJob,则历史记录中有作业.

kubectl get jobs

NAME               DESIRED   SUCCESSFUL   AGE
hello-1477281595   1         1            11m
hello-1553106750   1         1            12m
hello-1553237822   1         1            9m
Run Code Online (Sandbox Code Playgroud)

导出以下工作之一:

kubectl get job hello-1477281595 -o yaml > my_job.yaml
Run Code Online (Sandbox Code Playgroud)

然后稍微编辑yaml,擦除一些不必要的字段并手动运行:

kubectl create -f my_job.yaml
kubectl delete -f my_job.yaml
Run Code Online (Sandbox Code Playgroud)


Jos*_*ust 12

不幸的是,上述示例语法都不适用于 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>
Run Code Online (Sandbox Code Playgroud)


jdf*_*jdf 9

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

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

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

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


小智 6

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

看图


Jun*_*ius 6

如果您可以使用其他工具kubectl,那么K9s CLI是一个很棒的工具,除其他功能外,它还具有允许您触发 cronjobs 的触发命令。

为此,请进入 K9s 界面,使用命令搜索您的 cronjobs :cronjobs,选择要触发的任务并输入t

在幕后,它可能会创建一个Job使用CronJob配置,就像这个答案所建议的那样。