CronJob 把时间表变成一次 Pod 运行
CronJob 就是一份 Job 模板加一条 cron 表达式。表达式每次匹配,控制器就新建一个 Job,由它把 Pod 跑到完成再停掉。两轮之间没有任何常驻进程,这正是它吸引人的地方:批处理任务直接继承集群的重试、资源与调度机制,不需要谁养一个守护进程来触发它。 代价是时间表只被“近似”兑现。Kubernetes 承诺每个执行时刻“大约”创建一个 Job,这句措辞把两个方向的偏差都包了进去——同一时刻冒出两个 Job,或者一个都没有。凡是被排进 CronJob 的活都必须能安全跑两遍,因为你真正拿到的保证是至少一次,而不是恰好一次。 一张时间表催生一个 Job schedule 用熟悉的五个字段——分、时、日、月、星期——支持 Vixie cron 的区间与步长写法,所以 */10 * * * * 每十分钟触发一次,*/15 9-17 * * mon-fri 只落在工作时段内。? 与 * 等价,@daily、@hourly 这类宏会展开成对应的表达式。没有设置 timeZone 的 CronJob 跟随控制器管理器所在时区的本地时钟,控制面一换地方,任务的执行时刻就跟着变。少写一个字段是校验错误,这也让它成为 CronJob 少数会大声失败的配置错误之一。 ...