如何找到吊舱崩溃的原因?

时间:2020-02-28 03:21:45

标签: kubernetes horizontalpodautoscaler

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

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

在窗格中收集应用程序日志也无法提供任何见解。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

要从吊舱中获取日志,您应该使用:

kubectl logs [podname] -p

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

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

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

您可以阅读有关Application Introspection and Debugging的Kubernetes文档,并翻阅Debugging CrashLoopBackoffs with Init-Containers

您还可以尝试在Docker中运行映像并在那里检查日志。有关于Logs and troubleshooting的不错的文档。

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

答案 2 :(得分:0)

以下是发生崩溃回退的一些明显原因,我观察到了

  1. 等待某种条件得到满足,例如一些秘密 运行状况检查等失败
  2. pod正在爆发或尽力而为 QoS,由于资源不可用而被杀死 节点

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