根据 k8s 文档:
https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy
注意:如果您的作业具有 restartPolicy = "OnFailure",请记住,一旦达到作业退避限制,运行作业的 Pod 将被终止。这会使调试作业的可执行文件变得更加困难。我们建议在调试作业或使用日志系统时设置 restartPolicy =“Never”,以确保失败作业的输出不会无意中丢失。
我对这个注释很困惑:
如果我理解正确的话,退避计数只会随着失败的 Pod 而增加,而不是失败的容器。那么restartPolicy = "OnFailure"Pod 中的相同容器将在无限循环中重新启动,除非节点失败,否则永远不会增加退避计数?
如果 #1 是正确的 - 那么这个脚注就没有意义,因为与restartPolicy = "OnFailure"或没有区别restartPolicy = "Never"- 最后一个 Pod 无论如何都会因节点故障而丢失。
脚注在并行执行的情况下可能有意义 - 例如,如果有 2 个 Pod,并且restartPolicy = "OnFailure"退避限制设置为 2。因此,如果第一个 pod 处于错误循环中,并且第二个 pod 由于节点问题失败了 2 次,则第一个 pod 会被终止通过作业控制器退出错误循环。这就是这个脚注的内容吗?对我来说,这似乎是一个极其遥远的机会。
我觉得 Pod 生命周期中有一些更简单的逻辑原因导致了这种行为,但仍然无法指出它。
kubernetes ×1