排解 Kf Apps 問題

請按照下列步驟排解使用 Kf Apps 時可能發生的各種問題。

物件刪除作業卡住。

執行下列指令取得資源資訊,然後檢查下列原因:

kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml

kf CLI 可協助檢查部分問題:

kf doctor --space SPACE_NAME app/APP_NAME
可能的原因解決方案
刪除時間戳記為未來的時間。

由於時鐘偏差,metadata.deletionTimestamp 可能仍在未來。請稍候片刻,看看物件是否已刪除。

物件上有終結程序。

終結器會出現在物件上,必須由設定終結器的控制器在物件刪除前移除。

如果您想強制刪除,而不必等待終結器,請編輯物件,將其從 metadata.finalizers 陣列中移除。

如要從物件中移除終結器,請使用 kubectl edit RESOURCE_TYPE RESOURCE_NAME -n my-space 指令。

詳情請參閱「使用終結器控制刪除作業」。

警告:如果移除終結器而不允許控制器完成,可能會導致錯誤、安全性問題、資料遺失或孤立資源。

可能存在依附物件。

物件可能會等待依附項目刪除後,才會刪除。詳情請參閱 Kubernetes 垃圾收集指南。請管理員檢查命名空間和叢集中的所有物件,看看是否有物件阻止刪除作業。

如果您需要移除物件,但不必等待依附元件,請使用 kubectl delete,並將層疊旗標設為 --cascade=orphan

物件產生狀態偏移。

執行下列指令取得資源資訊,然後檢查下列原因:

kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml

kf CLI 可協助檢查部分問題:

kf doctor --space SPACE_NAME app/APP_NAME
可能的原因解決方案
物件有產生版本偏移。

這個錯誤通常是因為 Kf 控制器未讀取最新版本的物件,一旦 Kubernetes 副本達到最終一致性,這個錯誤通常會自動復原,通常也不需要使用者採取任何行動。

物件比對失敗。

執行下列指令取得資源資訊,然後檢查下列原因:

kubectl get apps.kf.dev -n SPACE_NAME APP_NAME -o yaml

kf CLI 可協助檢查部分問題:

kf doctor --space SPACE_NAME app/APP_NAME
可能的原因解決方案
物件有 TemplateError

使用者在自訂資源規格中輸入無效的屬性,或是工作區/叢集中的設定有誤,通常會發生這個錯誤。

如要瞭解根本原因,使用者可以使用指令 kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space 讀取物件 status.conditions 中的較長錯誤訊息。例如:kubectl describe serviceinstance my-service -n my-space

物件發生 ChildNotOwned 錯誤 (名稱相衝突)

這項錯誤通常表示控制器嘗試建立的物件已存在。如果使用者建立的 K8s 資源名稱與控制器嘗試建立的名稱相同,就會發生這種情況;但更常發生的情況是,使用者刪除資源,然後 Kf 控制器嘗試重新建立資源。如果子項資源仍在執行中,其擁有者將是不再存在的舊資源。

如要復原錯誤,建議使用者刪除受影響的資源,然後重新建立。如要刪除物件,請使用 Kf 刪除指令或 kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE 指令。例如 kf delete-space my-spacekubectl delete space my-space

如要重新建立資源,請使用 Kf 指令。例如 kf create-space my-space

物件有 ReconciliationError

這項錯誤通常表示 Kf 控制器向 Kubernetes API 伺服器發出的 HTTP 呼叫發生錯誤,無法建立/更新資源。

如要瞭解根本原因,使用者可以使用指令 kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space 讀取物件 status.conditions 中的較長錯誤訊息。例如:kubectl describe serviceinstance my-service -n my-space