簡體   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