Как я могу настроить Kubernetes Cronjob для запуска в определенное время - PullRequest
0 голосов
/ 12 марта 2019

Когда я устанавливаю расписание Cronjob как */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 голосов
/ 12 марта 2019

Вероятно, это связано с тем, что ваш кластер работает в другом часовом поясе, отличном от используемого вами.

Вы можете проверить, какой часовой пояс будет установлен в 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
0 голосов
/ 12 марта 2019

Попробуйте один раз и получите результат теста

0 30 11 1/1 * ? *

http://www.cronmaker.com/

...