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

问题描述 投票:0回答:9

我创建了一个 Kubernetes 计划作业,它根据其计划每天运行两次。但是,我想手动触发它以进行测试。我该怎么做?

scheduled-tasks kubernetes google-kubernetes-engine
9个回答
476
投票

@jdf 提到的问题#47538现已关闭,现在可以实现。原始实现可以在here找到,但语法已经改变。

对于 kubectl v1.10.1+,命令是:

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


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


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

22
投票
不幸的是,上面的示例语法都不适用于 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>
    

17
投票
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
您可以随时使用 删除作业执行 

kubectl delete job <job-name> -n <namespace>


如果您想查看可用的 cron 作业列表,请使用

kubectl get cronjobs -n <namespace>


    


9
投票
编辑 - 2018 年 7 月:请参阅 @pedro_sland 的

answer,因为此功能现已实现

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

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

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

https://github.com/kubernetes/kubernetes/issues/47538


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

See image


7
投票
如果您可以使用

kubectl

之外的工具,
K9s CLI是一个很棒的工具,除其他功能外,它还具有允许您触发 cronjobs 的触发命令。

为此,请进入 K9s 界面,使用命令

:cronjobs

 搜索您的 cronjobs,选择要触发的任务并输入 
t

在幕后,它可能使用

Job

 配置创建 
CronJob
,就像 
这个答案 建议的那样。


3
投票
为了方便起见,我创建了一个小型 cmd 实用程序来执行此操作,并暂停和取消暂停 cronjobs。

https://github.com/iJanki/kubecron


0
投票
如果您想测试作业,请从

Cron Job (ScheduledJob) 配置创建 Job 配置,并使用以下命令手动运行它:

kubectl create -f ./job.yaml
    
© www.soinside.com 2019 - 2024. All rights reserved.