如何找到 Kubernetes Pod 重启的原因

如何找到 Kubernetes Pod 重启的原因

我已将集群中的 Pod 规模扩大到 20 个,第二天我看到扩展后的几个 Pod 被重新创建了。

当我说 Pod 重新创建时,它会被删除并重新创建,并且重新创建的 Pod 和缩放的 Pod 的时间戳会有所不同。

我无法找到重新创建 Pod 的原因。

由于 Pod 已被删除并消失,我无法找到哪个 Pod 被重新创建。journalctl 中没有关于哪个 Pod 被重新创建的日志。我有什么方法可以进一步调试以找出 Pod 重新创建的原因?或者 POD 被删除的原因是什么?

注意:我已经定义了就绪性和活性探测,但据我所知,这些探测将作用于容器,不会导致 Pod 重新创建。

答案1

基本上你需要检查 Pod 的事件(这是一个提示怎么做)。

请记住,事件保留期太短(大约 1 小时),您可能需要将它们存储在其他地方。这是一篇好文章如何使用 EFK 堆栈来实现

Pod 重新创建的最常见原因 - 节点不可用。如果 Pod 的节点不可用,Kubernetes 会在其他节点上重新创建 Pod。

答案2

如果任何 Pod 被安排到的节点死亡(耗尽),那么这些 Pod 将在超时期限后被删除。

您可以通过 Pod 调度到的节点是否处于 Ready 状态来确定原因。否则,Pod 将进入 NotReady 状态并在一段时间后终止

答案3

我遇到了与 pod recreate 类似的问题,根据我的经验,您可以尝试以下操作:

  • 检查主机内核日志并确保没有 OOM killer 事件(使用命令dmesg -T | egrep -i 'killed process'
  • 确保 pid 为 1 的容器进程不会退出,当 pid 1 结束时,pod 将退出,并且 kubelet 将自动启动该 pod

我正面临这 2 种情况的 pod 重启。

相关内容