Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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作业中的吊舱时间限制--.spec.activedeadlines每个吊舱秒数_Kubernetes_Containers_Kubectl - Fatal编程技术网

Kubernetes作业中的吊舱时间限制--.spec.activedeadlines每个吊舱秒数

Kubernetes作业中的吊舱时间限制--.spec.activedeadlines每个吊舱秒数,kubernetes,containers,kubectl,Kubernetes,Containers,Kubectl,如关于工作主题的中所述: activeDeadlineSeconds适用于作业的持续时间,无论创建了多少POD。一旦作业达到activeDeadlineSeconds,其所有运行的pod都将终止,作业状态将变为type:Failed,原因为:deadlineextered 然而,我想做的是限制每个吊舱的时间。如果一个pod花费的时间太长,我希望它失败,但我希望其他pod继续,并在必要时为作业创建更多pod 我会解释一下我的任务,只是为了把问题弄清楚。作业包括从Redis数据库中获取项目,该数据库

如关于工作主题的中所述:

activeDeadlineSeconds
适用于作业的持续时间,无论创建了多少POD。一旦作业达到
activeDeadlineSeconds
,其所有运行的pod都将终止,作业状态将变为
type:Failed
,原因为:deadlineextered

然而,我想做的是限制每个吊舱的时间。如果一个pod花费的时间太长,我希望它失败,但我希望其他pod继续,并在必要时为作业创建更多pod


我会解释一下我的任务,只是为了把问题弄清楚。作业包括从Redis数据库中获取项目,该数据库充当一种队列。每个pod处理一个项目(当然,数量可能会有所不同)。如果pod处理一个项目花费的时间太长,我希望它失败。但是,其他POD应该继续,作业应该继续创建POD并从数据库中检索更多项目。

您的用例似乎与kubernetes文档中的相同。
正如您所说,
activeDeadlineSeconds
不是您应该在这里使用的参数

我不知道如果pod不能在给定的时间范围内处理某个项目,为什么您希望pod失败。我看到一些不同的方法,你可以在这里采取,但更多关于你的问题性质的信息是需要知道哪一个采取。 解决问题的一种方法是将作业并行性设置为您希望同时运行的POD数,并在代码本身中设置此行为-

  • 如果延迟处理的问题是暂时的,您可能希望终止当前事务,将该项保留在队列中,然后重新开始处理同一项
  • 如果同一项目失败x次,则应将其从队列中删除,并推送到某种死信队列中,等待稍后的故障排除
另一种方法是将队列中的消息扇形展开,这种方式将为每条消息生成一个工作区,如图所示。
选择此解决方案确实会导致每个pod花费太长时间来处理项目失败,如果您将创建的pod的
restartPolicy
设置为
never
,您手上应该有一个失败pod列表,对应于失败处理项目的数量


话虽如此,我不认为让pods失败是正确的方法,并且应该使用仪器来跟踪失败的处理事件,无论是通过容器日志还是度量标准。

使用工作队列示例进行精细并行处理的原因是因为我将其用作模板:)我认为您可能是对的,最好将此行为编程到代码中。因为您似乎很好奇,如果POD没有在给定的时间范围内完成,为什么我希望POD失败,我将详细介绍这个用例。我正在进行大规模数据分析,并希望模仿SLURM和Torque等批处理调度框架的行为,我希望能够定义walltime。根据我的经验,在这些系统中,walltime是一个必需的参数。你必须估计你的预期时间。从本质上讲,作业是在排队等待资源,如果分析花费的时间太长,您希望释放这些资源,以便其他人可以使用它们。例如,在Kubernetes中,有一些框架可以更有力地实现这些类型的内容,但我们没有时间实现类似的内容,所以我现在做的更多的是手工操作。谢谢@YaronIdan的帮助。我想这里没有简单的解决办法,只要好好想想就行了。