我如何以编程方式确定job
是否已经失败并且不再重试?我在失败的工作中看到了以下内容:
status:
conditions:
- lastProbeTime: 2018-04-25T22:38:34Z
lastTransitionTime: 2018-04-25T22:38:34Z
message: Job has reach the specified backoff limit
reason: BackoffLimitExceeded
status: "True"
type: Failed
但是,documentation并未解释为什么conditions
是一个列表。可以有多种条件吗?如果是这样,我依赖哪一个?是否保证只有一个status: "True"
?
答案 0 :(得分:2)
JobConditions
与PodConditions
类似。您可以在official docs中了解PodConditions
。
无论如何,为了确定一个成功的pod,我会采用另一种方式。我们来看看吧。
作业规范中有两个字段。
一个是spec.completion
(默认值为1),即
指定成功完成的pod的所需数量 工作应该用。
另一个是spec.backoffLimit
(默认值为6),即
指定标记此作业失败前的重试次数。
现在在JobStatus
JobStatus中也有两个字段。 Succeeded
和Failed
。 Succeeded
表示Pod成功完成的次数,Failed
表示达到阶段失败的窗格数。
Success
等于或大于spec.completion
后,作业将变为completed
。Failed
等于或大于spec.backOffLimit
后,作业将变为failed
。所以,逻辑就在这里,
if job.Status.Succeeded >= *job.Spec.Completion {
return "completed"
} else if job.Status.Failed >= *job.Spec.BackoffLimit {
return "failed"
}
答案 1 :(得分:0)