我正在尝试解决我在kubernetes中遇到的问题,在作业失败后,相关的pod似乎消失了,我无法查看日志。
但这不是我的问题。在阅读文档时,它似乎使用了术语"终止"。和";deleted"可以互换。这让我很困惑。我假设终止的pod不一定被删除,但是文档的编写方式暗示终止的pod和删除的pod是同一件事。
示例1:https://kubernetes.io/docs/concepts/workloads/controllers/job/job-termination-and-cleanup
当Job完成时,不会再创建pod,但通常也不会删除pod
"usually"然后链接到https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy,其中描述了终止的逻辑。所以在这里,链接到一个章节,旨在描述pod将被删除的逻辑,而不是描述pod将被终止的逻辑,暗示它们是相同的。
示例2:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/pod-termination-forced
本节标题为"强制Pod终止";然后解释当您试图强制删除一个pod时会发生什么。再次暗示终止和删除pod是一回事。
示例3:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/pod-termination
标题为"pod的终止"的这一节描述了当用户请求删除pod时会发生什么。
有问题的作业由于DeadlineExceeded.
而失败。文档说明"一旦作业达到activeDeadlineSeconds
,其所有运行的pod将被终止,并且作业状态将变为类型:Failed with reason:DeadlineExceeded
.&";如果terminated和deleted是同一个意思,那么这就解释了为什么我的pod不见了。我发现这是一个奇怪的设计选择,但它至少可以解释我的问题。
kubernetes文档问我文档是否有帮助,我说"没有";它告诉我创建一个关于堆栈溢出的问题,所以这就是我正在做的:)
正如@karthikeayan所说,删除和终止是一样的。是的,你的pod被删除了,因为activedeadlinesseconds超过了。
如果你的作业有一些错误,但你的restartPolicy不是Never,那么你的作业创建的pod将被删除
restartPolicy可以设置:这表示kubernetes将重新启动,直到Job在OnFailure上成功完成。但是,失败的数量不会随着每次重试而增加。为了防止循环失败,可以将activedeadlinesseconds设置为一个值。
您已经研究并收集了相当好的信息,这已经足够好了。要查找已删除pod的日志,请遵循此堆栈链接,否则最好的方法是通过日志代理集中日志,或者像@Jonas建议的那样直接将这些日志推送到外部服务