本頁說明 Config Sync 錯誤代碼,以及處理這些錯誤的建議做法。
Config Sync 錯誤訊息包含採用 KNV1234 格式 (1234 是專屬編號) 的錯誤 ID,後面加上問題說明和建議的修正方法。K 是從 Kubernetes 慣例繼承而來,前置字元為 N 的規則專屬於 nomos,V 則專屬於可在存放區和叢集初始狀態中偵測到的錯誤。存放區和叢集初始狀態中可偵測到的錯誤代碼格式為 KNV1XXX。只能在執行階段偵測到的錯誤代碼格式為 KNV2XXX。
KNV 錯誤表格
| 錯誤代碼 | 說明 | 建議做法 |
|---|---|---|
|
InternalError 的 ID 已變更為 |
不適用 |
|
Config Sync 1.3 版已淘汰此功能。 |
不適用 |
|
Config Sync 1.3 版已淘汰此功能。 |
不適用 |
|
使用階層式存放區結構時,內含命名空間設定的目錄不得包含任何子目錄。 沒有命名空間設定的目錄是抽象命名空間目錄,且包含從該目錄沿用的目錄。因此,抽象命名空間目錄必須有子目錄。包含命名空間設定的目錄為命名空間目錄,但無法成為沿用來源,因此不得含有任何子目錄。 |
請從上層目錄移除命名空間設定,或是將子目錄移至其他位置。 |
|
叢集範圍內的物件不得宣告 |
從 |
|
管理註解的唯一有效設定為 |
確認管理註解為 詳情請參閱「管理物件」。 |
|
無法剖析在存放區中宣告的物件。 |
驗證 YAML 格式。舉例來說,您可以使用
如果 |
|
使用非結構化存放區時,設定不得在抽象命名空間目錄中宣告。 |
將錯誤訊息中列出的設定移至命名空間目錄。 詳情請參閱「使用非結構化存放區」。 |
|
使用階層式存放區結構時,設定必須宣告與包含設定的命名空間目錄相符的命名空間,或省略該欄位。 |
更新錯誤訊息中識別的命名空間欄位。 詳情請參閱「階層式存放區結構」。 |
|
設定不得宣告開頭為 |
請確認你使用的是下列其中一種支援的註解:
|
|
設定的標籤不能有開頭為
|
更新錯誤訊息中指出的所有標籤。舉例來說,如果您嘗試宣告名為 |
|
Config Sync 1.3 版已淘汰此功能。 |
不適用 |
|
設定參照了不存在的 ClusterSelector 或 NamespaceSelector。您必須先建立選取器,才能在設定的註解中使用選取器。 |
建立所有缺少的選取器,或移除參照已移除選取器的所有設定。 |
|
ClusterSelector 和 NamespaceSelector 設定使用正確的語法,但系統發現了語法錯誤。 |
請務必使用適當的資料結構定義指定設定: |
|
Config Sync 1.3.2 版已淘汰此功能。 | 不適用 |
|
使用階層式存放區結構時,存放區的 |
請至少定義 ConfigManagement Operator 的最簡單設定。詳情請參閱階層式存放區的結構。 |
|
Config Sync 1.3 版已淘汰此功能。 | 不適用 |
|
使用階層式存放區結構時,您「不得」直接在 |
為錯誤訊息中列出的命名空間設定建立子目錄。詳情請參閱「階層式存放區結構」。 |
|
使用階層式存放區結構時,命名空間設定會宣告 metadata.name,且其值必須與命名空間目錄的名稱相符。 |
修正命名空間的 metadata.name 或目錄。 |
|
叢集中未定義資源的 CustomResourceDefinition。 |
為錯誤訊息中參照的資源建立 CustomResourceDefinition。 如果資源類型不是 Kubernetes 內建物件,就必須有 CustomResourceDefinition。 |
|
使用階層式存放區時,這類設定無法在 |
將錯誤訊息中參照的資源移出 |
|
Repo 設定中的 |
如果存放區格式與支援版本相容,請更新 |
|
目錄名稱不得超過 64 個半形字元,只能使用小寫英數字元或「-」,且開頭和結尾須為英數字元。 |
重新命名或移除名稱有誤的目錄。 |
|
相同種類的設定在相同命名空間和父項抽象命名空間中,名稱不得重複。 |
重新命名或移除錯誤訊息中提及的設定,確保所有設定都有專屬名稱。 |
|
同一個目錄中不得有多個命名空間資源。 |
移除重複的設定,確保命名空間資源數量不超過一個。 |
|
所有設定都必須宣告 |
在有問題的設定中新增 |
|
如果 |
移除有問題的設定,或將存放區轉換為使用 |
|
如果您使用階層式存放區,只能在 |
請確認 |
|
禁止宣告 |
如果您已宣告
如果您已宣告
如果您先前是同步至階層式存放區,且必須一併宣告控制器命名空間和任何資源,建議改用非結構化存放區,以便更彈性地調整來源結構。 |
|
提供的 |
變更
如果 |
|
Config Sync 1.3 版已淘汰此功能。 | 不適用 |
|
禁止在 |
將有問題的設定移至合法目錄。如要進一步瞭解命名空間範圍內的物件,請參閱「命名空間範圍內的物件」。 |
|
禁止在 |
將有問題的設定移至合法目錄。如要進一步瞭解叢集範圍內的物件,請參閱「叢集範圍內的物件」。 |
|
Config Sync 1.3 版已淘汰此功能。 | 不適用 |
|
這個資源種類不得在 |
移除有問題的資源。如要進一步瞭解 |
|
系統在 |
將 |
|
Config Sync 無法設定這個物件。 |
從存放區中移除有問題的設定。 |
|
含有設定的抽象命名空間目錄至少須有一個命名空間子目錄。 |
請在抽象命名空間目錄下新增命名空間目錄,或在抽象命名空間目錄中新增命名空間設定,或移除抽象命名空間目錄中的設定。 |
|
不允許使用指定 |
從來源存放區移除「 |
|
這個 |
更新 |
|
您無法移除自訂資源定義 (CRD),並將對應的自訂資源留在存放區中。 |
移除 CRD 和自訂資源。 |
|
CustomResourceDefinition 的名稱無效。 |
將名稱變更為錯誤訊息中建議的名稱。 |
|
設定檔使用的群組和類別已淘汰。 |
將 Group 或 Kind 變更為錯誤訊息中的建議。 |
|
叢集範圍內的資源不得宣告 |
從叢集範圍資源中移除「metadata.namespace」欄位。 |
|
命名空間範圍內的資源必須宣告 |
在命名空間範圍的資源中新增缺少的欄位。 |
|
設定含有無效的註解值。 |
按照錯誤訊息中的指示解決錯誤。 |
|
|
更新
|
|
資源是在非受管理命名空間中宣告。 |
請移除 |
|
資源含有無效標籤。 |
移除錯誤訊息中列出的違法標籤。 |
|
命名空間存放區只能在套用存放區的命名空間中,宣告命名空間範圍內的資源。 |
請確認所有命名空間存放區都正確宣告命名空間範圍內的資源。
舉例來說,
舉例來說,如果 除了確保正確宣告命名空間範圍的資源,也請確認命名空間是在根存放區中宣告。這是必要步驟,因為命名空間屬於叢集範圍。 |
|
命名空間存放區最多可宣告一個 Kptfile 資源。 |
移除所有 Kptfile 資源,只保留一個。 |
|
在多個單一事實來源中管理物件時,如果同一個物件 (相符的群組、種類、名稱和命名空間) 在多個來源中宣告,就可能發生衝突。 舉例來說,如果 RootSync 和 RepoSync 管理同一個物件,則 RootSync 會勝出。如果 RootSync 先套用,RepoSync 會回報 KNV1060 狀態錯誤。如果 RepoSync 先套用,RootSync 會覆寫 RepoSync 的物件,且 RepoSync 在看到更新時會回報 KNV1060 狀態錯誤。 |
如要解決衝突,請更新設定以符合其他單一資料來源,或從其中一個來源刪除衝突的物件。
|
|
|
按照錯誤訊息中的說明修正設定錯誤。 |
|
Kptfile 沒有有效的目錄欄位。Kptfile 應具有非空白的清單欄位,且指定了 ID 和命名空間。 |
在 Kptfile 中指定 |
|
在根存放區中找到 Kptfile。Kptfile 僅支援命名空間範圍內的存放區。 |
從根存放區中移除 Kptfile。 |
|
無法剖析存放區中的 |
按照錯誤訊息中的指示操作。舉例來說,您可能需要重新執行 |
|
CustomResourceDefinition 格式有誤。 |
檢查錯誤訊息中指定的欄位,確認其值格式正確。 |
|
設定物件只能宣告 cluster-selector 註解。如果同時存在舊版註解 ( |
從 |
|
協調器無法將宣告的欄位編碼為與伺服器端套用相容的格式。 原因可能是結構定義過舊。 |
檢查錯誤訊息指定的欄位,並確認該欄位符合資源種類的結構定義。 |
|
轉譯程序發生使用者可解決的問題。 |
如果 Git 存放區包含 Kustomize 設定,但 Git 同步目錄中沒有
如果錯誤是由
如果從公開存放區提取遠端基準時發生 |
|
協調器已協調自身的 RootSync 或 RepoSync 物件。RootSync 物件可以管理其他 RootSync 和 RepoSync 物件;RepoSync 物件可以管理其他 RepoSync 物件,但無法自我管理。 |
從物件同步來源的真實來源中,移除 RootSync 或 RepoSync 物件。 |
|
要求存取檔案系統資源的作業系統層級系統呼叫失敗。 |
這個錯誤可能是因為 YAML 設定無效或使用特殊字元。如果 YAML 設定無效,您會看到類似下列內容的錯誤訊息:
如果檔案名稱或路徑含有特殊字元,您可能會看到類似 |
|
存取 Kubernetes API 伺服器的要求失敗。 |
Kubernetes API 要求可能會因各種原因而失敗。常見原因包括:
發生大多數 API 伺服器錯誤時,Config Sync 會重試。有些問題可能會自行解決,但大多數都需要使用者介入才能解決。API 伺服器錯誤很少是由 Config Sync 本身所造成,但如果您懷疑可能是這個原因,請提交錯誤報告。 |
|
一般的作業系統層級系統呼叫失敗。 | |
|
Config Sync 無法從可靠來源讀取資料。 |
造成這項錯誤的原因有很多,如要排解連線至單一事實來源的問題,請參閱「排解連線至單一事實來源的問題」。如要瞭解導致 |
|
Config Sync 正在與另一個控制器爭奪資源。 這類爭鬥會耗用大量資源,並可能導致效能降低。 | 如需診斷及解決控制器衝突問題的訣竅,請參閱「排解控制器衝突問題」。 |
|
為避免誤刪,Config Sync 不允許您在單一提交中移除所有命名空間或叢集範圍的資源。 |
如果已停用 Config Sync 許可控制 Webhook,請還原刪除所有資源的提交。
如要刪除受管理的所有資源,請完成下列步驟:
|
|
API 伺服器上的資源遭到修改或刪除,但 Config Sync 也嘗試修改該資源。 |
如果這類錯誤只會在啟動時或偶爾出現,可以忽略這些錯誤。
如果這些錯誤並非暫時性 (持續數分鐘),可能表示有嚴重問題,請 |
|
這是一般錯誤,表示 Config Sync 無法將部分設定同步至叢集。 |
造成這項錯誤的原因有很多,如需解決常見同步問題的提示,請參閱「排解同步問題」。 |
|
此為一般錯誤,指出單一或多項資源發生錯誤。 |
錯誤訊息會包含造成錯誤的特定資源。調查這些資源。 |
|
有特定的資源需要處理,但系統找不到該資源。舉例來說,ConfigManagement Operator 嘗試更新某項資源,但該資源已經在系統計算更新時遭到刪除。 |
建立或還原遺失的資源。 |
|
這個錯誤回報,系統在只允許一個 APIResource 存在的位置,發現了多個 APIResource 執行個體。舉例來說,一個叢集上只能有一項 |
移除額外的 APIResource。 |
|
命名空間調解程式的權限不足,無法管理資源。 |
請確認對帳員具備足夠的權限。 |
|
如果 Config Sync 網頁 hook 設定遭到非法修改,就會出現這項警告。 系統會忽略違法的 Webhook 設定。 |
移除遭非法修改的 Webhook。 |
|
算繪程序發生內部問題。舉例來說, Config Sync 無法存取檔案系統。 |
這項錯誤可能表示 Pod 狀態不佳。您可以執行下列指令,重新啟動協調器 Pod: # restart a root reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=root-reconciler # restart a namespace reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=ns-reconciler-NAMESPACE |
|
這個錯誤代表暫時性問題,稍後應會自動解決。 舉例來說,如果轉譯狀態與來源設定不符,您可能會看到這項錯誤。 |
系統應會自動解決這個錯誤。 |
|
Config Sync 本身有問題。 |
請提交錯誤報告。 |
|
您遇到我們尚未記錄的錯誤。 |
我們還沒有針對您遇到的錯誤撰寫專屬的說明文件。 |
沒有 KNV 代碼的錯誤訊息
Config Sync 調解器回報的錯誤會顯示 KNV 錯誤代碼,但其他元件回報的錯誤不會顯示 KNV 代碼。舉例來說,權限遭拒錯誤來自於艦隊控制器,這是 Config Sync 之上的層級。
下表列出一些常見錯誤,但不含 KNV 前置字元。
| 錯誤訊息 | 建議做法 |
|---|---|
|
|
無法建構匯出工具
如果 Open Telemetry Collector 中的元件無法存取相同命名空間下的預設服務帳戶,您可能會發現 如果叢集啟用 Workload Identity Federation for GKE,通常會發生這個問題。 如要解決這個問題,請按照「監控 Config Sync」一文中的操作說明,授予預設服務帳戶指標寫入權限。
如果設定 IAM 後仍發生錯誤,請重新啟動 |
server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none
|
伺服器憑證驗證失敗
如果 這則訊息表示伺服器已設定自訂憑證授權單位 (CA) 的憑證。不過,自訂 CA 設定不正確,導致容器無法從伺服器擷取資料。
如要解決這個問題,請先確認 RootSync 或 RepoSync 物件中的
接著,如果已設定欄位且 Secret 物件存在,請確保 Secret 物件包含完整憑證。 以下範例說明如何列出伺服器憑證: echo -n | openssl s_client -showcerts -connect HOST:PORT -servername SERVER_NAME 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' 您可以要求網路管理團隊為您取得 CA 憑證。 |
Error message: "MESSAGE": "Unable to retrieve pull secret, the image pull may not succeed."
|
無法擷取提取密鑰,可能無法成功提取映像檔如果您使用 Google Distributed Cloud 的私人登錄檔,Config Sync 安裝或升級作業可能會停滯。您會看到類似以下訊息的錯誤。 如要解決這個問題,請先按照「使用私人登錄檔更新 Config Sync」一文的步驟操作,再安裝或升級 Config Sync。 |
Permission 'gkehub.features.create' denied on 'projects/PROJECT_ID/locations/global/features/configmanagement'
|
權限遭拒如果您嘗試設定 Config Sync 時收到類似以下範例的錯誤訊息,可能是因為您沒有 GKE Hub 管理員角色。 如要確認您具備必要權限,請確認您已授予必要的 IAM 角色。 |
後續步驟
- 查看已知問題。
- 請參閱 Config Sync 疑難排解簡介。
- 如需其他支援,請與 Cloud Customer Care 團隊聯絡。