有没有办法查看为什么 kubernetes pod 在重负载下以“craskLoopBackOff”状态失败?
我有一个永远不会启动的 HorizontalPodAutoscaler。在它的状态下,它总是显示低(低于 50%)cpu 和内存使用率。
在 pod 中跟踪应用程序日志也不会提供任何见解。
有没有办法查看为什么 kubernetes pod 在重负载下以“craskLoopBackOff”状态失败?
我有一个永远不会启动的 HorizontalPodAutoscaler。在它的状态下,它总是显示低(低于 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 的一些明显原因:
您可以运行此脚本来查找命名空间中 pod 的可能问题:https ://github.com/dguyhasnoname/k8s-day2-ops/blob/master/namespace_scripts/debug_app_namespace.sh