このページでは、Backup for GKE の使用時に発生する可能性のある権限エラー、アクションの実行時に考慮すべき事項、エラーの解決方法について説明します。
エラー 100010101: PersistentVolumeClaim のバックアップに失敗しました - テナント プロジェクトの IAM バインディングがありません
100010101
エラーは、テナント プロジェクトの Identity and Access Management バインディングがないことが原因で PersistentVolumeClaim
のバックアップの試行が失敗した場合に発生します。この場合、Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project
というエラー メッセージが表示されます。
Backup for GKE は、GKE クラスタの Persistent Disk のスナップショットを作成します。スナップショットは、コンシューマー プロジェクトとも呼ばれる Google Cloud プロジェクトに存在し、 Google Cloud は管理しているテナント プロジェクト内にスナップショットを作成します。テナント プロジェクトは、独自の組織とは別の google.com
組織内に存在します。
テナント プロジェクト内のサービス エージェントには、クラスタの PersistentVolumeClaim
で参照される Persistent Disk を暗号化する顧客管理の暗号鍵(CMEK)を使用するための特定の権限が必要です。この権限によって、スナップショット データの暗号化と復号が行われます。service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
サービス エージェントにディスクの CMEK に対する roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールがない場合、バックアップ オペレーションは失敗します。
このエラーを解決するには、次の手順で対応します。
Google Cloud コンソールの Cloud Key Management Service 鍵に対する IAM ポリシーを変更するのに十分な IAM 権限(
roles/cloudkms.admin
やroles/owner
など)があることを確認します。失敗したバックアップ オペレーションの
status reason
メッセージにあるTENANT_PROJECT_NUMBER
値を使用して、テナント プロジェクトの Compute Engine サービス エージェントを見つけます。例:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com
暗号化された Persistent Disk に使用される次の CMEK 情報を確認します。
鍵名: 暗号鍵の名前。
キーリング: 鍵が存在するキーリングの名前。
場所: 鍵が配置されている Google Cloud ロケーション。たとえば、
global
やus-central1
です。
テナント プロジェクトの Compute Engine サービス エージェントに CMEK の
roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与するには、Google Cloud CLI を使用してgcloud kms keys add-iam-policy-binding
コマンドを実行します。gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のように置き換えます。
KEY_NAME
: 暗号鍵の名前。KEY_RING
: キーリングの名前。LOCATION
: 鍵の Google Cloud ロケーション。たとえば、global
やus-central1
です。TENANT_PROJECT_NUMBER
: バックアップ オペレーションの失敗を示すstatus reason
メッセージから取得したテナント プロジェクト番号。
コマンドが成功すると、次のような出力が表示されます。
- members: - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter
バックアップ オペレーションを再テストします。上記を行ってもオペレーションがうまく進まない場合は、Cloud カスタマーケアまでお問い合わせください。
エラー 100010104: PersistentVolumeClaim のバックアップに失敗しました - スナップショットの作成中に組織ポリシーの制約違反が発生しました
100010104
エラーは、スナップショットの作成中に組織のポリシー制約への違反があったことが原因で、PersistentVolumeClaim
のバックアップの試行が失敗した場合に発生します。この場合、Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot
というエラー メッセージが表示されます。
Backup for GKE は、GKE クラスタの Persistent Disk のスナップショットを作成します。スナップショットは Google Cloud プロジェクト(別称: コンシューマー プロジェクト)に存在し、 Google Cloudによって管理されるテナント プロジェクト内に作成されます。テナント プロジェクトは、独自の組織とは別の google.com
組織内に存在します。
組織のポリシーによって、ストレージ リソースを作成できる場所が指定されます。Constraint constraints/compute.storageResourceUseRestrictions violated
エラーは、許可された組織構造の一部ではないテナント プロジェクトでリソースまたはスナップショットが作成されたことによって、ポリシーに違反したことを意味します。テナント プロジェクトは Google の組織内にあるため、定義したポリシーの対象外となり、バックアップが失敗します。
このエラーを解決するには、次の手順で対応します。
constraints/compute.storageResourceUseRestrictions
制約を実装する組織のポリシーを見つけます。 Google Cloud コンソールを使用して組織のポリシーを表示する方法については、組織のポリシーの表示をご覧ください。Backup for GKE で使用される
folders/77620796932
テナント プロジェクト フォルダを許可リストに含めるようにconstraints/compute.storageResourceUseRestrictions
ポリシーを変更します。フォルダを許可リストに追加したら、ポリシーの変更を保存します。
通常数分かかる組織のポリシーの更新と伝播が完了したら、バックアップ オペレーションを再テストします。バックアップは、ストレージ リソースの使用制限に違反することなく続行されます。上記を行ってもオペレーションがうまく進まない場合は、Cloud カスタマーケアまでお問い合わせください。
エラー 100010106: PersistentVolumeClaim のバックアップに失敗しました - Backup for GKE サービス エージェントの IAM バインディングがありません
100010106
エラーは、Backup for GKE サービス エージェントの Identity and Access Management バインディングがないことが原因で、PersistentVolumeClaim
のバックアップが失敗した場合に発生します。この場合、Failed to backup PVC - Missing IAM binding for Backup for GKE service agent
というエラー メッセージが表示されます。
Backup for GKE では、ボリュームの Persistent Disk の暗号化と復号に BackupPlan
の顧客管理の暗号鍵(CMEK)を使用する権限が必要です。Backup for GKE サービス エージェントに BackupPlan
CMEK の roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールがない場合、バックアップ オペレーションは失敗します。
このエラーを解決するには、次の手順で対応します。
プロジェクトに固有の Google マネージド Backup for GKE サービス エージェントを特定します。例:
service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com
。プロジェクト番号は、次の方法で確認できます。Google Cloud コンソールの Google Cloud プロジェクト ダッシュボードを使用します。
Google Cloud CLI を使用して
gcloud projects describe
コマンドを実行します。gcloud projects describe PROJECT_ID –format="value(projectNumber)"
PROJECT_ID
は、実際のプロジェクト名で置き換えます。
次の CMEK の詳細を確認します。
鍵名: 暗号鍵の名前。
キーリング: 鍵が存在するキーリングの名前。
ロケーション:
BackupPlan
CMEK が配置されている Google Cloud ロケーション。たとえば、global
やus-central1
です。
Backup for GKE サービス エージェントに CMEK の
roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与するには、Google Cloud CLI を使用してgcloud kms keys add-iam-policy-binding
コマンドを実行します。gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のように置き換えます。
KEY_NAME
: 暗号鍵の名前。KEY_RING
: キーリングの名前。LOCATION
: 鍵の Google Cloud ロケーション。たとえば、global
やus-central1
です。PROJECT_NUMBER
: Google Cloud プロジェクトの番号。
Cloud Key Management Service 鍵に必要な Identity and Access Management 権限があることを確認します。たとえば、
roles/cloudkms.admin
や、roles/owner
です。権限が付与されていることを確認します。前の
gcloud kms keys add-iam-policy-binding
コマンドの出力で、次のようなエントリを探します。-members: -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter
必要な権限を付与したら、バックアップ オペレーションを再テストします。オペレーションが正常に完了しない場合は、Cloud カスタマーケアにお問い合わせください。
エラー 100010107: PersistentVolumeClaim のバックアップに失敗しました - IAM バインディングがありません - エージェント サービス アカウント(KCP)
Backup for GKE バックアップ オペレーションを実行しようとしたときに、Google Kubernetes Engine クラスタ サービス エージェントが顧客管理の暗号鍵(CMEK)にアクセスできないと、エラー 100010107
が発生し、Failed to backup PVC - Missing IAM binding - agent service account (KCP)
というメッセージが表示されます。
通常 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
形式の Google Kubernetes Engine クラスタ サービス エージェントは、GKE クラスタが Google Cloudサービスとやり取りするために不可欠です。バックアップ プランで顧客管理の暗号鍵(CMEK)を使用している場合。このサービス エージェントには、CMEK を使用してバックアップ データを暗号化および復号する権限が必要です。バックアップ プランに CMEK の roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールがない場合、クラスタから開始されたバックアップ オペレーションは permission denied
エラーで失敗します。
このエラーを解決するには、次のトラブルシューティング手順を実施します。
Cloud Key Management Service 鍵の IAM ポリシーを変更する正しい権限があることを確認します。たとえば、
cloudkms.admin
や、roles/owner
です。Google Kubernetes Engine クラスタ サービス エージェントを特定します。このサービス エージェントは、GKE クラスタ用に Google Cloud によって自動的に作成および管理されます。例:
service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com
完全なサービス アカウントを作成するには、プロジェクト番号が必要です。プロジェクト番号は、次のいずれかの方法で確認できます。Google Cloud コンソールの Google Cloud プロジェクト ダッシュボードを使用します。
Google Cloud CLI を使用して
gcloud projects describe
コマンドを実行します。gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。
次の CMEK 情報を確認します。
鍵名: 暗号鍵の名前。
キーリング: 鍵が存在するキーリングの名前。
場所: 鍵が配置されている Google Cloud ロケーション。たとえば、
global
やus-central1
です。
CMEK レベルで
roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与します。Google Kubernetes Engine サービス エージェントには、暗号鍵に対する権限が必要です。CMEK にroles/cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与するには、Google Cloud CLI を使用してgcloud kms key add-iam-policy-binding
コマンドを実行します。gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のように置き換えます。
KEY_NAME
: 暗号鍵の名前。KEY_RING
: キーリングの名前。LOCATION
: 鍵の Google Cloud ロケーション。たとえば、global
やus-central1
です。PROJECT_NUMBER
: プロジェクトの名前。
出力は次のようになります。
- members: - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter ```
Backup for GKE オペレーションを再試行します。オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。
エラー 100020101: PersistentVolumeClaim のバックアップに失敗しました - サポートされていない PersistentVolume タイプにバインドされた PersistentVolumeClaim
100020101
エラーは、サポートされていない PersistentVolume
タイプに PersistentVolumeClaim
がバインドされているため、PersistentVolumeClaim
のバックアップの試行が失敗した場合に発生します。このエラーにより、次のエラー メッセージが表示されます: PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.
このエラーは、Backup for GKE オペレーションで、Backup for GKE によるデータ バックアップでサポートされていないボリューム タイプを使用する PersistentVolume
にバインドされている PersistentVolumeClaim
が検出された場合に発生します。Backup for GKE は、主に Persistent Disk ボリュームからのデータのバックアップをサポートしています。PersistentVolumeClaim
が Persistent Disk ではない PersistentVolume
にバインドされている場合、PersistentVolumeClaim
のデータのバックアップ オペレーションは失敗します。
このエラーを解決するには、次のトラブルシューティング手順を実施します。
kubectl get pvc
コマンドを実行して、すべてのPersistentVolumeClaims
と、それらにバインドされているPersistentVolumes
を一覧表示します。このリストを確認して、サポートされていないボリューム タイプでバックアップされているPersistentVolumes
を特定します。kubectl get pvc --all-namespaces -o wide
kubectl describe pv
コマンドを実行して、Backup for GKE でサポートされていないボリューム タイプでバックアップされたPersistentVolume
のボリューム タイプを特定します。kubectl describe pv PERSISTENT_VOLUME_NAME
次のように置き換えます。
PERSISTENT_VOLUME_NAME
: 前の手順の出力で列VOLUME
として一覧表示されているサポートされていないボリューム タイプのPersistentVolume
の名前。出力で、
Source
フィールドとDriver
フィールドを使用して、ボリューム プロビジョナーの詳細を取得します。サポートされている Persistent Disk の場合: 出力は
Source.Driver: pd.csi.storage.gke.io
またはSource.Type:GCEPersistentDisk
のようになります。エラーの原因となっているサポートされていないタイプの場合: 出力は Persistent Disk ドライバ以外(
Source.Driver:filestore.csi.storage.gke.io
など)になります。
次のいずれかの方法でエラーを解決します。
Persistent Disk ボリュームに移行する: この方法は、データのフル バックアップにおすすめします。実際のボリューム データをバックアップする必要がある場合は、Persistent Disk を使用する必要があります。これには、サポートされていないボリューム タイプから新しい Persistent Disk CSI ボリュームへのデータの移行が含まれます。Persistent Disk ボリュームの移行に関するサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。
Backup for GKE で制約なしモードを有効にする: サポートされていないボリュームでデータ バックアップが不要な場合は、この方法をおすすめします。データの移行が実現不可能または不要な場合(ボリュームが外部サービスによってバックアップされ、復元オペレーション中に再アタッチする予定の場合など)、Backup for GKE バックアップ プランを構成して、バックアップが制約なしモードで続行されるようにできます。制約なしモードを有効にする方法については、バックアップ プランで制約なしモードを有効にするをご覧ください。
Backup for GKE オペレーションを再試行します。エラーの解決方法に応じて、Backup for GKE オペレーションは次のように動作します。
Persistent Disk ボリュームに移行した場合、データを含むボリュームに対するバックアップが成功します。
制約なしモードを有効にしている場合、バックアップ オペレーションが成功しますが、サポートされていないボリュームのデータはバックアップされません。
オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。
エラー 100020104: PersistentVolumeClaim のバックアップに失敗しました - PersistentVolumeClaim が PersistentVolume にバインドされていません
100020104
エラーは、PersistentVolumeClaim
が PersistentVolume
にバインドされていないことが原因で、PersistentVolumeClaim
のバックアップの試行が失敗した場合に発生します。このエラーにより、次のエラー メッセージが表示されます: Failed to backup PVC - PVC Not Bound to a Persistent Volume
このエラーは、Backup for GKE オペレーションが PersistentVolume
に正常にバインドされていない PersistentVolumeClaim
のバックアップを試みた場合に発生します。PersistentVolumeClaim
を消費ワークロード(Pod など)で使用し、Backup for GKE でバックアップできるようにするには、PersistentVolume
にバインドする必要があります。PersistentVolumeClaim
が Pending
状態のままの場合、適切な PersistentVolume
が利用できないか、プロビジョニングまたはバインドできないことを示します。これにより、バックアップ オペレーションが失敗します。PersistentVolumeClaim
がバインドされない一般的な理由は、関連付けられた StorageClass
が WaitForFirstConsumer
バインディング モードを使用しているにもかかわらず、Pod や他のワークロードが PersistentVolumeClaim
を消費しようとしていない場合です。
このエラーを解決するには、次のトラブルシューティング手順を実施します。
クラスタ内のすべての
PersistentVolumeClaims
のステータスを確認し、バインドされていないPersistentVolumeClaim
を特定するには、kubectl get pvc
コマンドを実行します。kubectl get pvc --all-namespaces | grep `Pending`
PersistentVolume
にバインドされていないPersistentVolumeClaim
を特定したら、kubectl describe pvc
コマンドを実行して、バインドされていないPersistentVolumeClaim
に関する情報を取得します。kubectl describe pvc PVC_NAME -n NAMESPACE_NAME
次のように置き換えます。
PVC_NAME
: バックアップに失敗したPersistentVolumeClaim
の名前。NAMESPACE_NAME
:PersistentVolumeClaim
が存在する名前空間の名前。
説明が表示されたら、
Status
フィールドとEvents
フィールドを使用して、PersistentVolumeClaim
がPersistentVolume
にバインドされているかどうかを判断します。PersistentVolumeClaim
がPersistentVolume
にバインドされていない理由を特定できない場合や、特定された問題を解決できない場合は、バックアップ プランで制約なしモードを有効にできます。制約なしモードを有効にする方法については、バックアップ プランで制約なしモードを有効にするをご覧ください。