Kubernetes CronJob 需要历史清理策略
CronJob 按计划创建 Job,再由 Job 管理真正执行工作的 Pod。完成后的对象可以保留有用状态,但保留量受到多种独立机制影响。尤其要注意,CronJob 本来就有默认历史上限;省略显式历史字段,并不意味着普通已完成运行会无限堆积。分析清理问题时,先分清对象类型与状态,再判断是哪项机制没有覆盖。 当另一机制允许更早删除时,数量与 TTL 都不保证最低保留时长。清理是异步的,活动任务限制也不证明业务可安全重试。本轮未重跑保留诊断。 历史记录不等于日志归档 CronJob 默认最多保留三个成功 Job 和一个失败 Job,控制器分别协调两类记录。某类上限设为零,表示不保留该类历史,但清理是异步过程,不是任务结束那个瞬间必然消失。仍在运行的 Job 不属于完成历史,需要单独观察,不能期待这两个数量上限替它们设置运行期限。 三十天每小时一次意味着七百二十个计划机会,不一定保留七百二十个 Job,更不一定恰好产生相同数量的 Pod。错过调度、并发策略、重试与并行度都会改变关系,一个 Job 也可能拥有多个 Pod。用运行次数估算存储或控制面容量之前,应把这些假设说清楚,不能把理想时间表直接当成当前对象数量。 Pod 对象仍在,也不保证容器日志仍然可读。节点故障、日志轮转、容器清理和驱逐都会影响访问。真正需要按时长保留的证据,应交付到合适的日志系统。Kubernetes 对象便于调查状态,但不能替代归档保证;只延长 Job 历史,不会自动解决节点日志的生命周期问题。 ...