OpenShift:尽管主配置正确,但 Cronjob 仍在错误的时区执行

OpenShift:尽管主配置正确,但 Cronjob 仍在错误的时区执行

我在 OpenShift 中配置了一个 cronjob。它的 crontab 条目如下所示:

spec:
  schedule: "0 3 * * 1-5"
  jobTemplate:

因此它应该在工作日早上 03:00 运行。所有集群节点都配置为使用我们的本地时区 CET,即 UTC+1。这可以通过命令查看date。OpenShift 文档说 cronjobs 是通过与主节点配置的时区匹配的 crontab 执行的,所以我预计 cronjobs 实际上会在 03:00 CET 运行。

但是,根据日志,cronjobs 是在 04:00 执行的,也就是 UTC 的 03:00 CET。奇怪的是,它oc describe cronjob显示:

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

因此,服务器实际上知道 cronjob 执行晚了一个小时。

我的问题是:为什么 cronjob 执行晚了一个小时,为什么服务器知道这件事,我该如何解决这个问题?

答案1

CronJobs 由主控制器控制。

在 Openshift(~v3.10 之后)中,控制器作为 pod 运行,并在/etc/origin/node/pods(至少在我们的设置中)中定义。

我们遇到了完全相同的问题,并注意到控制器日志中的时间戳相差了一个小时。

这个问题通过添加安装来解决/etc/origin/node/pods/controller.yaml

在 下volumeMounts:,添加:

   - mountPath: /etc/localtime
      name: localtime

在 下volumes:,添加:

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

相关内容