← 中文资源

简体中文版本

为 CronJob 设置并发策略

按语义有意选择 Forbid、Replace 或 Allow,设置截止与历史限制,并让任务幂等,使重叠不会重复处理数据。

阅读英文原文

概述

默认并发策略允许第二次运行在前一次未结束时启动,导致同一窗口被重复处理。显式选择并发策略、设置截止时长与历史上限,并以幂等性兜底,可让调度行为可预期且不留垃圾。

关键步骤

  1. 依据重叠是否安全决定并发策略。
  2. 设置 activeDeadlineSeconds 以终止卡住的任务。
  3. 设置成功与失败历史上限以限制存储。
  4. 对允许重叠的情况让任务幂等。

验证

  • 并发行为与所选策略一致。
  • 卡住的任务按截止被终止。
  • 旧 Job 不会无限堆积。
  • 重叠不造成重复生效。

注意事项

  • CronJob 调度是尽力而为,在高负载或挂起时可能漏触发。
  • 并发策略只约束同一 CronJob 的重叠,不处理多集群重复。

适用范围

本条目围绕「为 CronJob 设置并发策略」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

apiVersion: batch/v1
kind: CronJob
spec:
  schedule: "0 2 * * *"
  concurrencyPolicy: Forbid
  startingDeadlineSeconds: 300
  jobTemplate:
    spec:
      activeDeadlineSeconds: 1800
      template:
        spec: { restartPolicy: OnFailure, containers: [{ name: job, image: app:1.0 }] }