首页/云/Kubernetes 速查/ttlSecondsAfterFinished 自动清理任务

ttlSecondsAfterFinished 自动清理任务

任务结束后经过指定秒数自动删除 Job 及其 Pod;让批处理不无限堆积对象,是集群卫生的基础配置。

Kubernetes 速查云更新于 2026-10-13

让完成的任务自己消失

任务完成后,对象与它创建的副本会一直保留在集群里,久而久之占用大量存储并拖慢列表查询。清理字段可以在任务结束后经过指定时间自动删除这些对象。给批处理加上这一项,是不用额外运维动作就能保持集群整洁的最省事做法。

基本信息

适用平台Kubernetes 1.21+,需控制器管理器启用相关能力
字段含义任务结束后经过多少秒自动删除
删除范围任务对象与它创建的副本
计时起点任务被判定为完成或失败的时刻
未配置后果对象长期保留,历史副本不断堆积

典型使用场景

  • 定时任务持续产生对象,需要自动回收
  • 数据导出与报表任务完成后不再需要保留对象
  • 集群对象数量增长过快,需要治理历史任务
  • 节省存储:失败副本的输出与日志占用可观
  • 在自动化流程中避免手工清理步骤

配置与清理

配置与清理
spec:
  ttlSecondsAfterFinished: 3600    # 完成后 1 小时自动清理
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: task
          image: registry.example.com/task:3.1

查看与手动清理

查看与手动清理
kubectl get jobs -A | grep -v Complete                  # 仍在运行的任务
kubectl get pods -A --field-selector status.phase=Succeeded | head -20   # 遗留成功副本
kubectl delete job batch-x                              # 手工清理单个任务
kubectl get job batch-x -o jsonpath='{.status.completionTime}'           # 完成时间

状态与处理

状态含义处理方式
完成任务成功结束按清理时长到期自动删除
失败达到重试上限同样适用清理规则,先确认是否需要排查
运行中尚未结束不受清理规则影响
长期保留未配置清理需要巡检或手工清理
清理是删除整个任务对象,包括它创建的副本。需要保留失败现场或输出的任务,应先把日志导出到日志系统,或把清理时长设置得足够长。
较老版本集群若未启用清理能力,字段配置后不会生效。配置前先确认控制器管理器具备该能力,否则会以为已清理而实际仍在堆积。

易错点

  • 清理时长过短就把现场删掉:失败原因与容器日志一并消失,问题无法复盘
  • 以为配置了就一定生效:旧版本集群未启用相关能力时字段不生效
  • 定时任务不配清理:对象与历史副本持续堆积,拖慢查询并占用存储
  • 清理规则同样作用于失败任务:需要人工排查的失败记录被自动删除

数据来源与参考

  • Kubernetes 官方文档 · Job(TTL Mechanism for Finished Jobs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌