如何确定工作是否失败



我如何从编程中确定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

但是,该文档没有解释为什么conditions是列表。可以有多种条件吗?如果是这样,我依靠哪一个?是否可以保证只有status: "True"

JobConditionsPodConditions相似。您可以在官方文档中阅读有关PodConditions的信息。

无论如何,要确定成功的豆荚,我遵循另一种方式。让我们看一下。


作业规格中有两个字段。

一个是 spec.completion(默认值1(,它说,

指定成功完成的POD的所需数量 工作应与。

另一个是 spec.backoffLimit(默认值6(,它说,

在标记此作业失败之前指定重试的数量。


现在在JobStatus

JobStatus也有两个字段。SucceededFailedSucceeded是指成功完成的POD的次数,Failed表示,到达相位的POD数量失败。

  • 一旦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"
}

如果是这样,我依靠哪一个?

您可能不必选择,考虑到dd84bba64

工作完成后,控制器将无限期更新其条件 有完整的条件。
此更改使控制器退出 一旦发现该工作已被标记为完整。

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#jobstatus-v1-batch说:

对象当前状态的最新可用观察结果。当一个工作失败,其中一个条件将具有"失败"类型。和状态真的。当工作暂停时,其中一个条件将具有类型"暂停"状态真实;恢复工作时,这种情况会变成错误。完成工作后,其中之一条件将具有"完整"类型。状态真实。更多信息:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

最新更新