Я настроил cronjob в OpenShift. Его запись в crontab выглядит так:
spec:
schedule: "0 3 * * 1-5"
jobTemplate:
Таким образом, он должен запускаться в 03:00 утра по будням. Все узлы кластера настроены на использование нашего местного часового пояса, CET, который равен UTC + 1. Это видно с помощью команды date
. В документации OpenShift говорится, что cronjobs выполняются через crontab, соответствующий настроенному часовому поясу главных узлов, поэтому я ожидаю, что cronjobs фактически запустятся в 03:00 CET.
Однако, согласно журналам, cronjobs выполняются в 04:00, что является 03:00 CET по UTC. Странно то, что oc description cronjob
показывает:
Last Schedule Time: Mon, 14 Jan 2019 04:00:00 +0100
Итак, сервер действительно знает, что cronjob выполняется на час позже.
У меня вопрос: почему задание cron выполняется с опозданием на час, почему сервер знает об этом и как я могу это исправить?
CronJobs управляется главным контроллером.
В Openshift (после ~ v3.10) контроллеры запускаются как под, определенный в / etc / origin / node / pods
(по крайней мере в нашей настройке).
У нас была точно такая же проблема, и мы заметили, что отметка времени в журналах контроллера была на один час с отклонением.
Это было исправлено путем добавления монтирования в / etc / origin / node / pods /controller.yaml[125 visible Под
volumeMounts:
добавьте:
- mountPath: /etc/localtime
name: localtime
Под тома:
добавьте:
- hostPath:
path: /etc/localtime
name: localtime