sim*_*szu 5 cron timezone kubernetes
我在 OpenShift 中配置了一个 cronjob。它的 crontab 条目如下所示:
spec:
schedule: "0 3 * * 1-5"
jobTemplate:
Run Code Online (Sandbox Code Playgroud)
所以它应该在工作日的早上 03:00 运行。所有集群节点都配置为使用我们的本地时区 CET,即 UTC+1。这可以通过date命令看到。OpenShift 文档说 cronjobs 是通过与主节点配置的时区匹配的 crontab 执行的,所以我希望 cronjobs 实际在欧洲中部时间 03:00 运行。
但是,根据日志,cronjobs 在 04:00 执行,即 UTC 时间的 03:00 CET。奇怪的部分是oc describe cronjob揭示:
Last Schedule Time: Mon, 14 Jan 2019 04:00:00 +0100
Run Code Online (Sandbox Code Playgroud)
因此,服务器实际上知道 cronjob 执行得太晚了一个小时。
我的问题是:为什么 cronjob 执行晚了一个小时,为什么服务器知道它,我该如何解决这个问题?
小智 6
CronJobs 由主控制器控制。
在 Openshift(~v3.10 之后)中,控制器作为 pod 运行,定义在/etc/origin/node/pods(至少在我们的设置中)。
我们遇到了完全相同的问题,并注意到控制器日志中的时间戳是一小时。
这是通过在 /etc/origin/node/pods/controller.yaml
在 下volumeMounts:,添加:
- mountPath: /etc/localtime
name: localtime
Run Code Online (Sandbox Code Playgroud)
在 下volumes:,添加:
- hostPath:
path: /etc/localtime
name: localtime
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |