繁体   English   中英

如何查找 Pod 崩溃的原因?

[英]How to find the reason of a pod crashing?

有没有办法查看为什么 kubernetes pod 在重负载下失败并显示“craskLoopBackOff”状态?

我有一个永远不会启动的 Horizo​​ntalPodAutoscaler。在它的状态下,它总是显示低(低于 50%)cpu 和内存使用率。

跟踪 pod 中的应用程序日志也不会提供任何见解。

尝试查看 Kubernetes 事件kubectl get events --sort-by='.lastTimestamp'

如果您没有从事件中获得任何有意义的信息,请转到特定节点并查看 kubelet 日志journalctl -u kubelet

要从 pod 获取日志,您应该使用:

kubectl logs [podname] -p

您也可以执行kubelet logs但这主要用于集群日志。

如果没有日志,则意味着您的应用程序在崩溃前没有生成任何日志。 您将需要重写应用程序,例如添加粉碎时的内存转储。

您提到pod在重负载下会死亡,但统计数据显示只有 50% 的利用率。 您应该登录到 pod 并检查自己的负载,也许检查正在打开的文件数量,因为您可能达到了限制。

您可以阅读有关应用程序内省和调试的 Kubernetes 文档阅读使用 Init-Containers 调试 CrashLoopBackoffs

您还可以尝试在 Docker 中运行您的图像并在那里检查日志。 有一个关于日志和故障排除的很好的文档可用。

如果您提供更多详细信息,我们可能会更有帮助。

以下是我观察到的 crashloopbackoff 的一些明显原因:

  1. 等待某个条件被填满,例如一些秘密,健康检查失败等
  2. pod 以可突发或尽力而为 QoS 运行,并且由于节点上的资源不可用而被终止

您可以运行此脚本以查找命名空间中 pod 的可能问题: https : //github.com/dguyhasnoname/k8s-day2-ops/blob/master/namespace_scripts/debug_app_namespace.sh

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM