このページでは、Backup for GKE の使用時に発生する可能性のあるシステム関連のエラー、リソースのバックアップ時に考慮すべき事項、問題のトラブルシューティングの手順について説明します。
エラー 100010108: PersistentVolumeClaim のバックアップに失敗しました - 暗号化されたディスクのバックアップ プラン CMEK がありません
リージョン スコープのボリューム バックアップの作成時にエラー 100010108 が発生し、GKE クラスタが暗号化されたディスクを参照しているため、バックアップ プランの CMEK が必須になっています。
エラーについて
リージョン スコープのボリューム バックアップを作成する場合、GKE クラスタが暗号化されたディスクを参照していると、バックアップ プランの CMEK が必須になります。これは、リージョン スコープのボリューム バックアップの厳格な要件です。ソースディスクが暗号化されている場合、そのディスクのスナップショットは、バックアップ プランの CMEK が提供されている場合にのみ作成できます。バックアップ プランにこの CMEK 構成がない場合、スナップショットの作成は失敗し、次のようなエラー メッセージが表示されます。
failed to create snapshot as disk "pvc-1" is encrypted with CMEK "projects/proj1/locations/us-east1/keyRings/keyring1/cryptoKeys/key1/cryptoKeyVersions/1", but no Backup Plan CMEK is provided. Please add CMEK to the Backup Plan.
トラブルシューティング手順
- 不足している CMEK 構成を特定する: エラー メッセージは、バックアップされる PVC が暗号化されていることを確認しますが、バックアップ プランの構成に暗号鍵がありません。
- バックアップ プランに CMEK を追加する: 顧客管理の暗号鍵(CMEK)を含めるようにバックアップ プランの構成を更新します。この鍵は、リージョン スコープのボリューム バックアップを含むバックアップ データの暗号化に使用されます。
- 適切な権限を確保する: Backup for GKE サービス エージェント(
service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com)に、新しく追加された CMEK のroles/cloudkms.cryptoKeyEncrypterDecrypterロールが割り当てられていることを確認します。 - バックアップ オペレーションを再テストする: バックアップ プランが CMEK で更新され、権限が付与されたら、バックアップ オペレーションを再試行します。
エラー 100020102: 厳密な許可モード - CRD のバックアップに失敗しました - サポートされていない v1beta1 API バージョン
100020102 エラーは、元々 apiextensions.k8s.io/v1beta1 バージョンとして適用された CustomResourceDefinition のバックアップの試行が、apiextensions.k8s.io/v1 API バージョンで必要な構造スキーマがないために失敗した場合に発生します。このエラーにより、次のエラー メッセージが表示されます: 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 v1.22 の API 削除をご覧ください。
制約ありモードでのバックアップ オペレーションの動作
制約ありモードの場合、または厳密なバックアップ プランの場合、v1beta1 API で作成された CustomResourceDefinition など、バックアップできないリソースが検出されると、バックアップ オペレーションは失敗します。このエラーは、リソースに v1 API で必要な構造スキーマがないために発生します。この CustomResourceDefinition が存在すると、新しいクラスタに正しく復元されない可能性があるため、重大なエラーと見なされます。
このエラーを解決するには、次の手順で対応します。
kubectl get crdコマンドを実行して、問題のあるCustomResourceDefinitionを特定します。kubectl get crd CRD_NAMECRD_NAMEは、エラー メッセージのCustomResourceDefinitionの名前に置き換えます。YAML 出力で、次の条件を見つけて、
CustomResourceDefinitionがvbeta1API からv1API に正しく変換されたかどうかを確認します。spec.versions:spec.versionsフィールドに表示されている各バージョンを確認して、spec.versions条件を見つけます。spec.versionsのいずれかにschema.openAIV3Schemaフィールドがない場合、CustomResourceDefinitionにはそのバージョンの構造スキーマが定義されていません。status.conditions:type:NonStructuralSchema条件を見つけてstatus.conditions条件を見つけます。status.conditionsのstatusがtrueの場合、スキーマが構造的でないことを明示的に示しています。
次の手順で
CustomResourceDefinitionからv1API バージョンにアップグレードします。カスタム リソース内のすべてのフィールドとその型を定義する構造スキーマを追加して、既存の
CustomResourceDefinitionを編集し、v1標準と互換性を持たせます。構造スキーマを追加する方法の詳細については、構造スキーマの指定をご覧ください。互換性のある
v1マニフェストをクラスタに適用します。
アップグレードが成功したら、バックアップ オペレーションを再試行します。それ以外の場合は、次のいずれかの方法で問題を解決します。
クラスタで
CustomResourceDefinitionが使用されていない場合は、kubectl delete crdコマンドを実行してCustomResourceDefinitionを削除します。kubectl delete crd CRD_NAMECRD_NAMEは、削除するCustomResourceDefinitionの名前に置き換えます。バックアップ プランで制限なしモードを有効にします。これにより、Backup for GKE はリソース(
v1beta1API バージョンのCustomResourceDefinitionsを含む)をスキップし、残りのバックアップ オペレーションを続行できます。制約なしモードを有効にする方法については、バックアップ プランで制約なしモードを有効にするをご覧ください。
バックアップ オペレーションを再試行します。オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。
エラー 100040102: Namespace が見つかりません
エラー 100040102 は、バックアップ スコープで指定された Namespace がクラスタ内で見つからないため、バックアップ オペレーションの実行が失敗した場合に発生します。Backup for GKE エージェントは、BackupPlan 構成の selectedNamespaces フィールドに明示的にリストされている 1 つ以上の Namespace を特定できませんでした。Backup for GKE では、バックアップ オペレーションの開始時に、指定されたすべての Namespace がクラスタに存在する必要があります。Namespace が見つからないと、次のエラー メッセージが表示されます。
Namespace [NAMESPACE_NAME] is not found.
この問題を解決するには、次の手順で対応します。
BackupPlan構成のselectedNamespacesリストを確認して、Namespace が正しく入力されていることを確認します。kubectl get namespaceコマンドを実行して、エラー メッセージで報告された Namespace が存在することを確認します。kubectl get namespace NAMESPACE_NAMENAMESPACE_NAMEは、エラー メッセージで報告される Namespace の名前に置き換えます。Namespace が存在しない場合は、Namespace が見つからなかったことを示すメッセージ(
Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not foundなど)が表示されます。BackupPlanを修正します。Namespace のスペルが間違っている場合は、正しい Namespace 名でBackupPlanを正しく更新します。Namespace が本当に存在せず、バックアップする必要がない場合は、BackupPlan構成のselectedNamespacesリストから削除します。BackupPlanに必要な修正を行った後、バックアップ オペレーションを再試行して、新しいバックアップを開始します。
オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。