Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何阻止CronJob重新创建失败的作业?_Kubernetes_Kubernetes Cronjob - Fatal编程技术网

Kubernetes 如何阻止CronJob重新创建失败的作业?

Kubernetes 如何阻止CronJob重新创建失败的作业?,kubernetes,kubernetes-cronjob,Kubernetes,Kubernetes Cronjob,无论出于何种原因,当我删除运行CronJob启动的作业的pod时,我立即看到一个新的pod被创建。只有当我删除了六倍于backoffLimit数量的pod时,新的pod才会停止创建 当然,如果我正在积极地监视这个过程,我可以删除CronJob,但是如果在我不查看的时候,job中的Pod失败了呢?我不希望它被重新创建 如何阻止CronJob持续创建新作业(或pod?),并在当前作业/pod失败时等待下一个计划时间?除了CronJobs之外,还有类似于Jobs的backoffLimit吗?将star

无论出于何种原因,当我删除运行CronJob启动的作业的pod时,我立即看到一个新的pod被创建。只有当我删除了六倍于
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,则始终允许它们各自的job并发运行

如果未能在预定时间创建CronJob,则该CronJob将被视为丢失。例如,如果
并发策略
设置为
禁止
,并且在上一个计划仍在运行时尝试调度CronJob,则它将被视为错过

对于每个CronJob,CronJob控制器都会检查从上次计划时间到现在的持续时间内错过了多少个计划。如果错过的计划超过100个,则不会启动作业并记录错误

您可以在此处找到更多信息:和


我希望这会有所帮助。

我不相信你可以用那种方式控制cronjob,但是你可以删除从cronjob中生成的作业,这样它就不会生成pod(对于那次运行)@HoMan听起来很失望。我已经在edit.hmmm中阐明了我的意图,如果你只关心作业失败,而不是一个已删除的pod,backoffLimit应该已经达到了你所需要的程度了?@Homan
backoffLimit
似乎控制了pod的重试次数,但不是一个作业(我自己也不太确定)?我在第一段中描述的实验表明,退避限制没有得到尊重。如何使用
startingDeadlineSeconds
似乎真的不直观。你能提出一个人类可读的解释吗?关于field startingDeadlineSeconds,你可以在这里阅读:我投了赞成票,这是一个有用的信息,但我仍然面临集群中的问题行为,我在OP中描述了这一点(无可否认,这可能是我这边的问题,这里不确定)。一般来说,在这种情况下,我不愿意勾选复选标记,宁愿将问题保留在未回答状态,希望其他人能提供更完整的解决方案。