Kubernetes 如何阻止CronJob重新创建失败的作业?
无论出于何种原因,当我删除运行CronJob启动的作业的pod时,我立即看到一个新的pod被创建。只有当我删除了六倍于Kubernetes 如何阻止CronJob重新创建失败的作业?,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,无论出于何种原因,当我删除运行CronJob启动的作业的pod时,我立即看到一个新的pod被创建。只有当我删除了六倍于backoffLimit数量的pod时,新的pod才会停止创建 当然,如果我正在积极地监视这个过程,我可以删除CronJob,但是如果在我不查看的时候,job中的Pod失败了呢?我不希望它被重新创建 如何阻止CronJob持续创建新作业(或pod?),并在当前作业/pod失败时等待下一个计划时间?除了CronJobs之外,还有类似于Jobs的backoffLimit吗?将star
backoffLimit
数量的pod时,新的pod才会停止创建
当然,如果我正在积极地监视这个过程,我可以删除CronJob,但是如果在我不查看的时候,job中的Pod失败了呢?我不希望它被重新创建
如何阻止CronJob持续创建新作业(或pod?),并在当前作业/pod失败时等待下一个计划时间?除了CronJobs之外,还有类似于Jobs的backoffLimit吗?将startingDeadlineSeconds设置为一个大值或未设置(默认值) 同时,将
.spec.concurrencyPolicy
设置为禁止
,并且CronJobs在上一个创建的作业仍在运行时跳过新作业的运行
如果
设置为一个大值或未设置(默认值),并且
设置为禁止
,如果失败,作业将不会运行
可以将并发策略字段添加到CronJob(.spec.concurrentypolicy)定义的规范中,但这是可选的
它指定如何处理由该作业创建的作业的并发执行。规范只能指定以下三种并发策略之一:
- 允许(默认)-cron作业允许并发运行作业
- 禁止-cron作业不允许并发运行;如果是新作业运行的时间,而上一个作业运行尚未完成,则cron作业将跳过新作业运行
- 替换-如果是新作业运行的时间,而上一个作业运行尚未完成,则cron作业将用新作业运行替换当前运行的作业运行
并发策略
设置为禁止
,并且在上一个计划仍在运行时尝试调度CronJob,则它将被视为错过
对于每个CronJob,CronJob控制器都会检查从上次计划时间到现在的持续时间内错过了多少个计划。如果错过的计划超过100个,则不会启动作业并记录错误
您可以在此处找到更多信息:和
我希望这会有所帮助。我不相信你可以用那种方式控制cronjob,但是你可以删除从cronjob中生成的作业,这样它就不会生成pod(对于那次运行)@HoMan听起来很失望。我已经在edit.hmmm中阐明了我的意图,如果你只关心作业失败,而不是一个已删除的pod,backoffLimit应该已经达到了你所需要的程度了?@Homan
backoffLimit
似乎控制了pod的重试次数,但不是一个作业(我自己也不太确定)?我在第一段中描述的实验表明,退避限制没有得到尊重。如何使用startingDeadlineSeconds
似乎真的不直观。你能提出一个人类可读的解释吗?关于field startingDeadlineSeconds,你可以在这里阅读:我投了赞成票,这是一个有用的信息,但我仍然面临集群中的问题行为,我在OP中描述了这一点(无可否认,这可能是我这边的问题,这里不确定)。一般来说,在这种情况下,我不愿意勾选复选标记,宁愿将问题保留在未回答状态,希望其他人能提供更完整的解决方案。