在 Kubernetes 集群中检查失败的 Pod 日志

3
我有一个 Kubernetes 集群,在其中不同的 Pod 运行在不同的命名空间中。如何知道任何 Pod 是否失败?
是否有任何单个命令来检查失败的 Pod 列表或重启的 Pod 列表?
以及重启的原因(日志)?
3个回答

4

这取决于您是想要详细的信息还是只想检查最后几个失败的pod。

我建议您阅读有关日志记录体系结构(Logging Architecture)的内容。

如果您想要详细的信息,您应该使用第三方软件,如Kubernetes文档中所述-使用Elasticsearch和Kibana进行日志记录(Logging Using Elasticsearch and Kibana)或另一个FluentD

如果您正在使用云环境,则可以将其集成到云日志记录(Cloud Logging)工具中(例如在Google Cloud Platform中可使用Stackdriver)。

如果您想要检查日志以找到pod失败的原因,可以在K8s文档中找到良好的描述Debug Running Pods

如果您想获取特定pod的日志

$ kubectl logs ${POD_NAME} -n {NAMESPACE}

首先,查看受影响容器的日志:
$ kubectl logs ${POD_NAME} ${CONTAINER_NAME} 

如果您的容器之前已经崩溃过,您可以使用以下命令查看先前容器的崩溃日志:
$ kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}

您可以使用以下方式获取更多信息

$ kubectl get events -o wide --all-namespaces | grep <your condition>

类似的问题在这个SO帖子中发布过,你可以查看更多细节。


0

大多数情况下,应用程序失败的原因都会在上一个 Pod 的持久日志中打印出来。您只需在 kubectl logs ... 命令后加上 --previous 标志即可查看它们。


-1
这个会起作用:kubectl get pods --all-namespaces | | grep -Ev '([0-9]+)/\1' 此外,在这些情况下Lens非常好用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接