Назад | Перейти на главную страницу

OpenShift: Cronjob выполняется в неправильном часовом поясе, несмотря на правильную конфигурацию мастера

Я настроил 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 describe cronjob показывает:

Last Schedule Time:  Mon, 14 Jan 2019 04:00:00 +0100

Таким образом, сервер действительно знает, что задание cron выполнено на час позже.

Мой вопрос: почему задание cron выполняется на час позже, почему сервер знает об этом и как я могу это исправить?

CronJobs управляется мастер-контроллером.

В Openshift (после ~ v3.10) контроллеры запускаются как под, определенный в /etc/origin/node/pods (по крайней мере, в нашей настройке).

У нас была точно такая же проблема, и мы заметили, что отметка времени в журналах контроллера была на один час позже.

Это было исправлено добавлением крепления в /etc/origin/node/pods/controller.yaml

Под volumeMounts:, Добавить:

   - mountPath: /etc/localtime
      name: localtime

Под volumes:, Добавить:

  - hostPath:
      path: /etc/localtime
    name: localtime