我正在运行一个包含 20 多个节点的 kubernetes 集群。命名空间中的一个 pod 重新启动。 Pod 由于 OOM 被终止,退出代码为 137,并按预期再次重新启动。但想知道 pod 之前运行在哪个节点。我们可以在哪里检查日志中的信息?像tiller、kubelet、kubeproxy等...
但是想知道 pod 之前运行在哪个节点。
如果使用
ExitCode: 137
杀死 pod,例如当它使用的内存超过其限制时,它将在同一节点上重新启动 - 而不是重新调度。为此,请检查您的指标或容器日志。
但是 Pod 也可能由于过度提交节点而被杀死,请参见例如如何排查 Kubernetes OOM 和 CPU Throttle 问题。
您可以使用下面的
Promql
查询从哪个 pod 重新启动时获取 nodename
、pod name
、namespace
:
sum(kube_pod_info * on(pod, namespace) group_left(node)
sum(changes(kube_pod_container_status_restarts_total[5m])) by (namespace, pod) > 0) by (node, pod, namespace)
如果您正在运行 Prometheus,您可以使用以下查询返回节点名称和其他 Pod 详细信息。
kube_pod_info{pod="<pod-name>", namespace="<namespace>"}[1h]