如何设置检查调度?

检查调度字段使用 Crontab 表达式,允许在诸如分钟、小时、天、月、周和年等维度上精确定义触发时间。

主要特性

由于 Kubernetes 在 UTC(协调世界时)上运行,因此当设置计划任务的触发规则时,需要先将本地时间(例如,北京时间)转换为 UTC 时间,然后将 UTC 时间转换为 Crontab 表达式。

转换 UTC 时间

时间转换规则:本地时间 - 时区差 = UTC

北京时间转换为 UTC 时间 为例:

北京位于 UTC+8 时区,因此北京时间与 UTC 之间的时差为 8 小时,时间转换规则为:

北京时间 - 8 = UTC

示例 1:北京时间 9:42 转换为 UTC 时间:42 09 - 00 08 = 42 01,表示 UTC 时间为 01:42 AM。

示例 2:北京时间 4:32 AM 转换为 UTC 时间:32 04 - 00 08 = -68 03。如果这个数字为负数,则表示前一天,需要再进行一次转换:-68 03 + 00 24 = 32 20,表示 UTC 时间为前一天 8:32 PM。

编写 Crontab 表达式

基本格式:分钟 小时 日 月 周

值范围

分钟小时
[0-59][0-23][1-31][1-12] 或 [JAN-DEC][1-7] 或 [SUN-SAT]

minuteshoursdaysmonthsweeks 字段允许使用特殊字符,包括:

  • ,:用于指定多个值的列表分隔符。例如:1,2,5,7,8,9。
  • -:用户自定义的值范围。例如:2-4,表示 2、3、4。
  • *:表示整个时间段。例如,在分钟中使用表示每一分钟。
  • /:用于指定增量值。例如:n/m 表示从 n 开始,每 m 增加一次。

可以参考在线转换工具 Crontab.guru

常见示例

  • 输入 30 18 25 12 * 表示任务将在 12 月 25 日的 18:30:00 触发。

  • 输入 30 18 25 * 6 表示任务将在每个月的 25 日的 18:30:00 触发,并且是每个星期六。

  • 输入 30 18 * * 6 表示任务将在每个星期六的 18:30:00 触发。

  • 输入 * 18 * * * 表示从离 18:00:00 最近的有效时间开始,任务将每分钟触发一次(包括在 18:00:00 时)。

  • 输入 0 18 1,10,22 * * 表示任务将在每个月的 1 日、10 日和 22 日的 18:00:00 触发。

  • 输入 0,30 18-23 * * * 表示在每天 18:00 和 23:00 之间,任务将在每个小时的 00 和 30 分钟触发。

  • 输入 * */1 * * * 表示任务将每分钟触发一次。

  • 输入 * 2-7/1 * * * 表示任务将在每天 2 AM 到 7 AM 之间每分钟触发一次。

  • 输入 0 11 4 * mon-wed 表示任务将在每个月的 4 日的上午 11 点触发,并且触发时间为周一至周三。