Backup for GKE のストレージ エラーのトラブルシューティング


このページでは、Backup for GKE の使用時に発生する可能性のあるストレージ関連のエラー、アクションの実行時に考慮すべき事項、問題のトラブルシューティングの手順について説明します。

エラー 100010105: PersistentVolumeClaim のバックアップに失敗しました - PersistentVolume で参照されているディスクが存在しません

エラー 100010105 は、存在しないディスクを参照しているため PersistentVolumeClaim のバックアップの試行が失敗した場合に発生します。この場合、Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist というエラー メッセージが表示されます。

Google Kubernetes Engine では、PersistentVolumeClaimsPersistentVolumes からストレージをリクエストします。PersistentVolume は、通常は基盤となる Compute Engine Persistent Disk であるストレージの一部を表します。PersistentVolumeClaimPersistentVolume にバインドされ、PersistentVolume の構成で Compute Engine 永続ディスクが指定されている場合、エラーが発生することがあります。ただし、PersistentVolume 構成で指定された名前と場所の実際のディスクが Google Cloud プロジェクトに見つかりません。そのため、Backup for GKE は存在しないディスクのバックアップを続行できず、障害が発生します。

このエラーを解決するには、次の手順を行います。

  1. 問題のある PersistentVolumeClaimPersistentVolume を特定します。問題のある PersistentVolumeClaim とそれに関連付けられた PersistentVolume の両方の名前が、失敗した Backup for GKE オペレーションの state reason フィールドに表示されます。PersistentVolumeClaim の名前、その Namespace、PersistentVolume の名前の両方を文書化することをおすすめします。

  2. PersistentVolume を調べます。PersistentVolume の説明を取得するには、次のコマンドで状態理由フィールドから特定した PersistentVolume 名を使用します。

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    PERSISTENTVOLUME_NAME は、PersistentVolume の名前に置き換えます。

  3. 出力で、source セクション(特に csi)を確認します。このセクションでは、PersistentVolume が参照しようとしている VolumeHandle について説明します。次に例を示します。

    Source:
      Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: my-non-existent-disk
    FSType: ext4
    Partition: 0
    ReadOnly: false
                In this example, the PD name is my-non-existent-disk.
    
        Source:
      Type:       CSI (a Container Storage Interface (CSI) volume)
      Driver:     pd.csi.storage.gke.io
      VolumeHandle: projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    ...
    

    この例では、VolumeHandle にディスクのフルパス(名前とロケーションを含む)が含まれています。例: projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name

  4. PersistentVolume の説明から取得した VolumeHandle を使用して、ディスク名とゾーンを特定します。

  5. 次のいずれかの方法で、ディスクが Google Cloud プロジェクトに存在することを確認します。

    ゾーンディスク

    ゾーンディスクを使用している場合は、Google Cloud CLI を使用して gcloud compute disks describe コマンドを実行します。

    gcloud compute disks describe DISK_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    次のように置き換えます。

    • DISK_NAME: PersistentVolume の説明から取得したディスクの名前。

    • ZONE_NAME: PersistentVolume の説明から取得したディスクのゾーン。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

    リージョン ディスク

    リージョン ディスクを使用している場合は、Google Cloud CLI を使用して gcloud compute disks describe コマンドを実行します。

    gcloud compute disks describe DISK_NAME \
        --region=REGION_NAME \
        --project=PROJECT_ID
    

    次のように置き換えます。

    • DISK_NAME: PersistentVolume の説明から取得したディスクの名前。

    • REGION_NAME: PersistentVolume の説明から取得したディスクのリージョン。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

    Resource not found または The resource DISK_NAME was not found エラー メッセージが表示された場合、ディスクは存在しません。ニーズに最も適したシナリオに応じて、次のいずれかの方法で問題を解決します。

    • ディスクが誤って削除されたか、名前が間違って付けられていて、データまたは PersistentVolumeClaim を保持したい場合、または PersistentVolume が間違ったディスク名で構成されている場合は、次のいずれかの方法で問題を解決します。

      • ディスクを復元する: ディスクのバックアップがある場合は、PersistentVolume が参照する名前と場所を正確に指定して復元します。

      • 新しいディスクを作成する: ディスクの復元がオプションでない場合は、PersistentVolume 構成と同じ名前とロケーションで新しいディスクを作成します。

    • PersistentVolumeClaim または PersistentVolume、そのデータ、アプリケーションが不要になった場合は、不要なエンティティを削除することをおすすめします。

      • PersistentVolumeClaim を削除する: kubectl コマンドライン ツールを使用して kubectl delete pvc コマンドを実行し、PersistentVolumeClaim を削除します。
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      次のように置き換えます。

      • PVC_NAME: 削除する PersistentVolumeClaim の名前。

      • NAMESPACE: 削除する PersistentVolumeClaim の名前空間。

    • PersistentVolumeClaim を削除しても PersistentVolume が残る: PersistentVolumePersistentVolumeReclaimPolicyDelete に設定されている場合、PersistentVolumeClaim が削除されると PersistentVolume は自動的に削除されます。persistentVolumeReclaimPolicyRetain に設定されている場合は、PersistentVolumeClaim の削除後に PersistentVolume を手動で削除する必要があります。PersistentVolume を削除するには、kubectl コマンドライン ツールを使用して kubectl delete pv コマンドを実行します。

      kubectl delete pv PV_NAME
      

      PV_NAME は、削除する PersistentVolume の名前に置き換えます。

オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。