本頁說明使用 Backup for GKE 時可能發生的系統相關錯誤、備份資源時應注意的事項,以及疑難排解步驟。
錯誤 100020102:嚴格寬鬆模式 - 無法備份 CRD - 不支援 v1beta1
API 版本
如果嘗試備份原本以 apiextensions.k8s.io/v1beta1
版本套用的 CustomResourceDefinition
,但因缺少 apiextensions.k8s.io/v1
API 版本中必要的結構定義而失敗,就會發生 100020102
錯誤。這個錯誤會導致下列錯誤訊息:
Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version
。
Google Kubernetes Engine 1.22 版已移除 apiextensions.k8s.io/v1
API 版本,因此會發生這個錯誤。如要進一步瞭解 GKE 1.22 版的 API 移除作業,請參閱「GKE 1.22 版的 API 移除作業」。
非寬鬆模式下的備份作業行為
在非寬鬆模式或嚴格備份方案中,如果備份作業遇到無法備份的資源 (例如使用 v1beta1
API 建立的 CustomResourceDefinition
),就會失敗。發生這項錯誤的原因是資源缺少 v1
API 要求的結構化結構定義。如果存在這個 CustomResourceDefinition
,系統會視為重大錯誤,因為可能無法正確還原至較新的叢集。
如要解決這項錯誤,請按照下列說明操作:
執行
kubectl get crd
指令,找出有問題的CustomResourceDefinition
:kubectl get crd CRD_NAME
將
CRD_NAME
替換為錯誤訊息中的CustomResourceDefinition
名稱。在 YAML 輸出內容中,找出下列條件,確認
CustomResourceDefinition
是否已從vbeta1
API 正確轉換為v1
API:spec.versions
:在「spec.versions
」欄位下方列出的每個版本中,找出spec.versions
條件。如果任何spec.versions
缺少schema.openAIV3Schema
欄位,則CustomResourceDefinition
不會為該版本定義結構性結構定義。status.conditions
:找出type:NonStructuralSchema
條件,即可找到status.conditions
條件。如果status.conditions
的status
為true
,則明確確認結構定義並非結構性。
請按照下列步驟,將
CustomResourceDefinition
升級至v1
API 版本:編輯現有的
CustomResourceDefinition
,加入結構定義結構定義,定義自訂資源中的每個欄位及其類型,即可與v1
標準相容。如要進一步瞭解如何新增結構定義,請參閱「指定結構定義」。將相容的
v1
資訊清單套用至叢集。
升級成功後,請重新嘗試備份作業。否則,請使用下列任一方法解決問題:
如果叢集未使用
CustomResourceDefinition
,請執行kubectl delete crd
指令刪除CustomResourceDefinition
。kubectl delete crd CRD_NAME
將
CRD_NAME
替換為要刪除的CustomResourceDefinition
名稱。在備份方案中啟用寬鬆模式,讓 Backup for GKE 略過資源 (包括
CustomResourceDefinitions
API 版本中的v1beta1
),並繼續執行其餘備份作業。如要進一步瞭解如何啟用寬容模式,請參閱「啟用備份方案的寬容模式」。
重新嘗試備份作業。如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,以取得進一步協助。