如何手动触发 Kubernetes 计划作业?
How can I trigger a Kubernetes Scheduled Job manually?
我创建了一个 Kubernetes Scheduled Job,它根据其时间表每天运行两次。但是,出于测试目的,我想手动触发它。我该怎么做?
您可以根据您的 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
如果您想测试该作业,请创建一个 Job config from your Cron Job (ScheduledJob) 配置并使用以下命令手动 运行 它:
kubectl create -f ./job.yaml
编辑 - 2018 年 7 月:请参阅@pedro_sland 的 ,因为此功能现已实现
我下面的原始答案对于低于 v1.10.1 的旧版本 kubectl 仍然是正确的
============================================= ===========================
除了创建新工作(正如其他答案所建议的那样),目前没有其他方法可以做到这一点。现在可以在此处跟踪 kubernetes 的功能请求:https://github.com/kubernetes/kubernetes/issues/47538
为了方便起见,我创建了一个小的 cmd 实用程序,还可以暂停和取消暂停 cronjobs。
问题 #47538 that is now closed and this is now possible. The original implementation can be found here 但语法已更改。
使用 kubectl v1.10.1+ 命令是:
kubectl create job --from=cronjob/<cronjob-name> <job-name>
它似乎与旧集群向后兼容,因为它在 v0 上对我有用。8.x。
不幸的是,上述示例语法中的 none 在 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>
在 k8s 仪表板的这个选项卡中有一个手动触发 cron 作业的选项
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
您可以随时使用删除作业执行kubectl delete job <job-name> -n <namespace>
如果您想查看可用的玉米工作列表,请使用 kubectl get cronjobs -n <namespace>
我创建了一个 Kubernetes Scheduled Job,它根据其时间表每天运行两次。但是,出于测试目的,我想手动触发它。我该怎么做?
您可以根据您的 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
如果您想测试该作业,请创建一个 Job config from your Cron Job (ScheduledJob) 配置并使用以下命令手动 运行 它:
kubectl create -f ./job.yaml
编辑 - 2018 年 7 月:请参阅@pedro_sland 的
我下面的原始答案对于低于 v1.10.1 的旧版本 kubectl 仍然是正确的
============================================= ===========================
除了创建新工作(正如其他答案所建议的那样),目前没有其他方法可以做到这一点。现在可以在此处跟踪 kubernetes 的功能请求:https://github.com/kubernetes/kubernetes/issues/47538
为了方便起见,我创建了一个小的 cmd 实用程序,还可以暂停和取消暂停 cronjobs。
问题 #47538 that
使用 kubectl v1.10.1+ 命令是:
kubectl create job --from=cronjob/<cronjob-name> <job-name>
它似乎与旧集群向后兼容,因为它在 v0 上对我有用。8.x。
不幸的是,上述示例语法中的 none 在 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>
在 k8s 仪表板的这个选项卡中有一个手动触发 cron 作业的选项
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>
您可以随时使用删除作业执行kubectl delete job <job-name> -n <namespace>
如果您想查看可用的玉米工作列表,请使用 kubectl get cronjobs -n <namespace>