我已经创建了一个Kubernetes Scheduled Job,根据它的时间表每天运行两次。但是,出于测试目的,我希望手动触发它。我该怎么做呢?


当前回答

如果您可以使用kubectl以外的工具,那么K9s CLI是一个非常棒的工具,除了其他特性外,它还具有触发器命令,允许您触发cronjob。

为此,进入K9s界面,使用命令:cronjobs搜索您的cronjob,选择您想要触发的cronjob并键入t。

在底层,它可能使用CronJob配置创建一个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

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

kubectl create -f ./job.yaml
kubectl create job --from=cronjob/<cron-job-name> <job-name> -n <namespace>

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

如果您想查看可用的玉米作业列表,请使用kubectl get cronjobs -n <命名空间>

如果您可以使用kubectl以外的工具,那么K9s CLI是一个非常棒的工具,除了其他特性外,它还具有触发器命令,允许您触发cronjob。

为此,进入K9s界面,使用命令:cronjobs搜索您的cronjob,选择您想要触发的cronjob并键入t。

在底层,它可能使用CronJob配置创建一个Job,就像下面的答案所建议的那样。

不幸的是,上面的示例语法都不能在谷歌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>