假设我和我正在处理的合作伙伴公司生活在一个采用夏令时的国家/地区。
我在 kubernetes 集群中有一个 CronJob,它每天在 4:00、10:00、16:00 和 22:00 将文件上传到合作伙伴公司。例如0 4,10,16,22 * * *
。
Kubernetes SIG决定CronJob 对象将不支持本地时区,并将始终以默认时区运行,即 UTC。
我可以更改时间表,以便它反映上面在 UTC 中指定的本地时间,并为 CronJob 提供该时间表。但是,每次夏令时开始(一年两次)时,我都需要以某种方式修改所有 CronJobs 以使用新时间,并且我需要修改我的部署管道以使用新时间创建 CronJobs 的新版本。
在夏令时更改之后,我无法让 CronJob 以相同的时间表运行,因为该作业将不会在合作伙伴预期的时间内上传文件。
管理这个最简单的方法是什么?
选项1
有人建议编写一个新的 kubernetes 控制器可以做到,但似乎没有人提出这个挑战并发布工作解决方案。
选项 2
我考虑过的另一个选择是更改整个集群的时区。但是如果你用谷歌搜索它,它似乎并不是一个非常流行的解决方案,而且有些人强烈认为 kubernetes 作为一个云应用程序应该在 UTC 中运行。
据我所知,cron
使用本地时区,在 kubernetes 的情况下,它将是控制器管理器的时区,它不是运行节点的时区所必需的。另一方面,更改控制器管理器容器的时区听起来有风险,因为尚不清楚它将如何与 Kubernetes 的其他组件(例如 etcd 和 kubelets)交互。
选项 3
每年手动执行两次。由于组织中的人来来去去,因此很难在何时以及如何保留知识。我不希望我们的合作伙伴一年抱怨两次。此外,由于日期每年都在变化,因此为此设置通知可能会很棘手。
选项 4
编写一些本土自动化以每年运行两次,并希望当时间到来时它按预期工作。这实际上是触发,在正确的时间触发并完成它应该做的一切。(后者更容易测试,但前者更难)。
所有这些选项都让人感到很不满意。我用谷歌搜索了很多,但我没有找到很多,我觉得这应该是很常见的问题,但搜索中没有任何内容。我是否忽略了什么?有没有简单自然的方法来解决它?
小智 0
我知道这是一个老问题,但 argo 工作流程有一个支持时区和夏令时的 Cron 工作流程 CRD。https://argoproj.github.io/argo-workflows/cron-workflows/#daylight- saving 。
归档时间: |
|
查看次数: |
3771 次 |
最近记录: |