このページでは、Backup for GKE の使用時に発生する可能性のあるストレージ関連のエラー、アクションの実行時に考慮すべき事項、問題のトラブルシューティングの手順について説明します。
エラー 100010105: PersistentVolumeClaim のバックアップに失敗しました - PersistentVolume で参照されているディスクが存在しません
100010105 エラーは、存在しないディスクを参照していることが原因で PersistentVolumeClaim のバックアップの試行が失敗した場合に発生します。この場合、Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist というエラー メッセージが表示されます。
Google Kubernetes Engine では、PersistentVolumeClaims が PersistentVolumes からストレージをリクエストします。PersistentVolume は、ストレージの一部(多くの場合、基盤となる Compute Engine 永続ディスク)を表します。PersistentVolumeClaim が PersistentVolume にバインドされ、PersistentVolume の構成で Compute Engine 永続ディスクが指定されている場合、エラーが発生することがあります。ただし、PersistentVolume 構成で指定された名前と場所の実際のディスクが Google Cloud プロジェクトに見つかりません。そのため、Backup for GKE は存在しないディスクのバックアップを続行できず、エラーが発生します。
このエラーを解決するには、次の手順で対応します。
問題のある
PersistentVolumeClaimとPersistentVolumeを特定します。問題のあるPersistentVolumeClaimとそれに関連付けられたPersistentVolumeの両方の名前が、失敗した Backup for GKE オペレーションのstate reasonフィールドに表示されます。PersistentVolumeClaimの名前と名前空間、PersistentVolumeの名前の両方を文書化することをおすすめします。PersistentVolumeを調べます。PersistentVolumeについて説明するには、次のコマンドで状態理由フィールドから特定したPersistentVolume名を使用します。kubectl describe pv PERSISTENTVOLUME_NAMEPERSISTENTVOLUME_NAMEは、PersistentVolume の名前に置き換えます。出力で、
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-namePersistentVolumeの説明から取得したVolumeHandleを使用して、ディスク名とゾーンを特定します。次のいずれかの方法で、ディスクが 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が残る:PersistentVolumeのPersistentVolumeReclaimPolicyがDeleteに設定されている場合、PersistentVolumeClaimが削除されるとPersistentVolumeは自動的に削除されます。persistentVolumeReclaimPolicyがRetainに設定されている場合は、PersistentVolumeClaimが削除された後にPersistentVolumeを手動で削除する必要があります。PersistentVolumeを削除するには、kubectlコマンドライン ツールを使用してkubectl delete pvコマンドを実行します。kubectl delete pv PV_NAMEPV_NAMEは、削除するPersistentVolumeの名前に置き換えます。
オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。