全部產品
Search
文件中心

:常見Pod問題

更新時間:Feb 25, 2025

部署在EDAS上的Kubernetes叢集應用在運行期間出現的問題一般為Pod問題。本文介紹常見的Pod問題及其解決方案。

常見Pod問題

ImagePullBackOff

當Kubernetes無法擷取Pod中某個容器的鏡像時,將出現此錯誤。

可能原因:

  • 鏡像名稱無效,例如鏡像名稱拼字錯誤,或者鏡像不存在。
  • 為鏡像指定了不存在的標籤。
  • 鏡像在私人鏡像倉庫中,Kubernetes無法訪問。

解決方案:

  • 對於前兩種情況,可以通過修改鏡像名稱和標籤來解決問題。
  • 對於第三種情況,您需要以Secret的形式將私人鏡像倉庫的訪問憑證添加到Kubernetes中,並在Pod中引用該Secret。

CrashLoopBackOff

如果容器無法啟動,則Kubernetes將顯示此錯誤狀態。

可能原因:

  • 應用程式中存在錯誤,導致應用無法啟動。
  • 未正確配置容器。
  • Liveness探針失敗次數太多。

解決方案:

您可以嘗試從該容器中檢索日誌以調查失敗原因。如果因為容器重新啟動太快而看不到日誌,則可以使用以下命令來查看日誌:

$ kubectl logs <pod-name> --previous

RunContainerError

容器無法啟動時可能出現此錯誤。

可能原因:

  • 掛載了不存在的卷,例如ConfigMap或Secrets。
  • 唯讀卷被安裝為可讀寫卷。

解決方案:

請使用以下命令收集資訊和分析錯誤。

kubectl describe pod

Pod處於Pending狀態

建立應用過程中,Pod一直處於Pending狀態。

可能原因:

  • 叢集沒有足夠的資源(例如CPU和記憶體)來運行Pod。
  • 當前命名空間具有ResourceQuota對象,建立Pod將使命名空間超過配額。
  • 該Pod綁定了一個處於Pending狀態的PersistentVolumeClaim。

解決方案:

  • 執行以下命令並查看輸出的“事件”部分的內容,或者在控制台查看應用事件,詳情請參見查看應用事件
    $ kubectl describe pod <pod name>
  • 對於因ResourceQuota導致的錯誤,可以執行以下命令來檢查叢集日誌。
    $ kubectl get events --sort-by=.metadata.creationTimestamp

Pod處於未就緒狀態

如果Pod正在運行但未就緒(Not Ready),則表示就緒探針失敗。

可能原因:

當就緒探針失敗時,Pod未串連到服務,並且沒有流量轉寄到該執行個體。

解決方案:

就緒探針失敗是應用程式的特定錯誤,請執行以下命令並查看輸出的“事件”部分的內容,或者在控制台查看應用事件,詳情請參見查看應用事件

$ kubectl describe pod <pod name>