如何阻止 CronJob 重新创建失败的作业?
How do I stop a CronJob from recreating failed Jobs?
当我出于某种原因删除由 CronJob 启动的 pod 运行 作业时,我会立即看到正在创建一个新的 pod。只有当我删除了 pods 的 backoffLimit
数量的六倍之类的内容后,新的内容才会停止创建。
当然,如果我正在主动监控进程,我可以删除 CronJob,但是如果我不注意时作业中的 Pod 失败了怎么办?我不希望它被重新创建。
如果当前job/pod失败,如何阻止CronJob坚持创建新作业(或pods?),并等到下一个预定时间?是否有类似乔布斯的东西 backoffLimit
,但用于 CronJobs?
将 startingDeadlineSeconds
设置为较大的值或不设置(默认值)。
同时设置.spec.concurrencyPolicy
为Forbid
,CronJobs会跳过新作业运行,而之前创建的作业仍在 运行ning。
如果 startingDeadlineSeconds
设置为较大的值或未设置(默认值)并且如果 concurrencyPolicy
设置为Forbid
,如果失败则作业不会运行。
您可以将并发策略字段添加到规范中以定义您的 CronJob (.spec.concurrencyPolicy),但这是可选的。
它指定如何处理由此 CronJob 创建的作业的并发执行。规范可能只指定这三种并发策略中的一种:
- 允许(默认) - cron 作业允许并发 运行ning 作业
- Forbid - cron 作业不允许并发 运行s;如果是新工作 运行 的时间并且之前的工作 运行 尚未完成,则 cron 作业将跳过新工作 运行
- Replace - 如果到了新作业 运行 的时间,而前一个作业 运行 尚未完成,则 cron 作业将替换目前 运行正在工作 运行 有一份新工作 运行
很高兴知道货币政策仅适用于由同一 CronJob 创建的作业。
如果有多个 CronJob,它们各自的作业总是允许 运行 并发。
如果 CronJob 未能在预定时间创建,则计为错过。例如,如果 concurrencyPolicy
设置为 Forbid
并且在之前有一个 CronJob 时尝试安排还安排了运行ning,那就算错过了。
对于每个 CronJob,CronJob 控制器检查从上次计划时间到现在的持续时间内它错过了多少计划。如果错过的计划超过 100 个,则不会启动作业并记录错误
您可以在此处找到更多信息:CronJobs
and AutomatedTask
。
希望对您有所帮助。
CronJob 通过“backoffLimit”创建一个作业,在您的情况下具有默认值 (6),并且默认重启策略是 (Always)
最好使 backoffLimit > (0) 并使重启策略 = (Never) 并将 startingDeadlineSeconds 增加到小于或等于您的间隔,或者您可以根据您的要求自定义它以控制 运行每个 CronJob 的时间 运行
此外,您可以停止“concurrencyPolicy”>>(禁止)
当我出于某种原因删除由 CronJob 启动的 pod 运行 作业时,我会立即看到正在创建一个新的 pod。只有当我删除了 pods 的 backoffLimit
数量的六倍之类的内容后,新的内容才会停止创建。
当然,如果我正在主动监控进程,我可以删除 CronJob,但是如果我不注意时作业中的 Pod 失败了怎么办?我不希望它被重新创建。
如果当前job/pod失败,如何阻止CronJob坚持创建新作业(或pods?),并等到下一个预定时间?是否有类似乔布斯的东西 backoffLimit
,但用于 CronJobs?
将 startingDeadlineSeconds
设置为较大的值或不设置(默认值)。
同时设置.spec.concurrencyPolicy
为Forbid
,CronJobs会跳过新作业运行,而之前创建的作业仍在 运行ning。
如果 startingDeadlineSeconds
设置为较大的值或未设置(默认值)并且如果 concurrencyPolicy
设置为Forbid
,如果失败则作业不会运行。
您可以将并发策略字段添加到规范中以定义您的 CronJob (.spec.concurrencyPolicy),但这是可选的。
它指定如何处理由此 CronJob 创建的作业的并发执行。规范可能只指定这三种并发策略中的一种:
- 允许(默认) - cron 作业允许并发 运行ning 作业
- Forbid - cron 作业不允许并发 运行s;如果是新工作 运行 的时间并且之前的工作 运行 尚未完成,则 cron 作业将跳过新工作 运行
- Replace - 如果到了新作业 运行 的时间,而前一个作业 运行 尚未完成,则 cron 作业将替换目前 运行正在工作 运行 有一份新工作 运行
很高兴知道货币政策仅适用于由同一 CronJob 创建的作业。 如果有多个 CronJob,它们各自的作业总是允许 运行 并发。
如果 CronJob 未能在预定时间创建,则计为错过。例如,如果 concurrencyPolicy
设置为 Forbid
并且在之前有一个 CronJob 时尝试安排还安排了运行ning,那就算错过了。
对于每个 CronJob,CronJob 控制器检查从上次计划时间到现在的持续时间内它错过了多少计划。如果错过的计划超过 100 个,则不会启动作业并记录错误
您可以在此处找到更多信息:CronJobs
and AutomatedTask
。
希望对您有所帮助。
CronJob 通过“backoffLimit”创建一个作业,在您的情况下具有默认值 (6),并且默认重启策略是 (Always)
最好使 backoffLimit > (0) 并使重启策略 = (Never) 并将 startingDeadlineSeconds 增加到小于或等于您的间隔,或者您可以根据您的要求自定义它以控制 运行每个 CronJob 的时间 运行 此外,您可以停止“concurrencyPolicy”>>(禁止)