如何设置Kubernetes Cronjob在特定时间运行

时间:2019-03-12 03:43:56

标签: kubernetes cron kubernetes-cronjob

当我将Cronjob Schedule设置为*/1 * * * *时,它将起作用。

当我在0-59中将crontab minute中的任何数字设置为30 * * * *时,它也会正常工作。

但是,当我将Cronjob Schedule设置为30 11 * * *时,它甚至没有在11:30创建工作。

所有配置都遵循:

apiVersion: batch/v1beta1 kind: CronJob metadata: name: hello spec: schedule: "33 11 * * *" jobTemplate: spec: template: spec: containers: - name: hello-cronjob image: busybox command: ["bash","-c","date;echo Hello from the Kubernetes cluste"] restartPolicy: OnFailure

2 个答案:

答案 0 :(得分:0)

尝试一次并测试结果

0 30 11 1/1 * ? *

http://www.cronmaker.com/

答案 1 :(得分:0)

这可能是因为您的群集运行的时区不同于您使用的时区。

您可以使用以下方法检查在POD中设置的时区:

kubectl run -i --tty busybox --image=busybox --restart=Never -- date

对于您的yaml来说,它看起来不错,无需更改spec.schedule值。

一个可能对您有用的小提示正在检查Jobs中的日志。

按计划创建CronJob时,它将产生一个Job,您可以使用kubectl get jobs看到它们。

$ kubectl get jobs
NAME               DESIRED   SUCCESSFUL   AGE
hello-1552390680   1         1            7s

如果使用该作业的名称hello-1552390680并将其设置为变量,则可以检查该作业的日志。

$ pods=$(kubectl get pods --selector=job-name=hello-1552390680 --output=jsonpath={.items..metadata.name})

您以后可以查看日志:

$ kubectl logs $pods
Tue Mar 12 11:38:04 UTC 2019
Hello from the Kubernetes cluster