Kubernetes 运行 cronjob 在错误的时间

Kubernetes run cronjob in wrong time

我有一个时间表: schedule: "0 10,14,18 * * *",我想 运行 这份工作 10:00 上午,2:00pm,6:00pm。

因为我位于 UTC+8 时区,所以这个 cronjob 看起来不像我预期的 运行。

要为时区添加配置吗?

From Kubernetes documentation:

Note: All CronJob schedule: times are based on the timezone of the master where the job is initiated.

master部署在香港应该没问题。 GCP 在中国没有区域(参见 here

您可以考虑在 Aws 上部署 Kubernetes。 aws在中国北京和中国宁夏都有区域(见here

或者可能在 Azure 上(参见 here

通过上述设置,schedule: "0 10,14,18 * * *" 应该可以工作

如果您使用的是托管 GCP K8s,则时间为 UTC

Docs

对于 vanilla kubernetes,您可以修复静态 pod。添加区块

    volumeMounts:
    - name: localtime
      mountPath: /etc/localtime
      readOnly: true
volumes:
  - hostPath:
    path: /etc/localtime
    name: localtime

这使得 kube-controller-manager 运行 与主机处于同一时区。

在v1.22中,有一种方法可以做到。

设置类似 CRON_TZ=Asia/Tehran 0 0 * * * 的内容作为 .spec.schedule 值

In addition, the CronJob schedule supports timezone handling, you can specify the timezone by adding "CRON_TZ=" at the beginning of the CronJob schedule, and it is recommended to always set CRON_TZ.

文档位于 https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#:~:text=In%20addition%2C%20the%20CronJob%20schedule,the%20kube%2Dcontroller%2Dmanager