このページでは、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 構成で指定された名前と場所の実際のディスクが Cloud de Confiance by S3NS プロジェクトに見つかりません。そのため、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を使用して、ディスク名とゾーンを特定します。次のいずれかの方法で、ディスクが Cloud de Confiance by S3NS プロジェクトに存在することを確認します。
ゾーンディスク
ゾーンディスクを使用している場合は、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: 実際の Cloud de Confiance by S3NS プロジェクト 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: 実際の Cloud de Confiance by S3NS プロジェクト 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 カスタマーケアにお問い合わせください。
エラー 100010202: ボリュームのスナップショット作成に失敗しました
エラー 100010202 は、Compute Engine 永続ディスクのスナップショットの作成に失敗した場合に発生します。この場合、Snapshotting volume failed というエラー メッセージが表示されます。
Backup for GKE サービスによって開始されたスナップショット作成プロセス中に、ディスクの仮想マシン(VM)インスタンスへのアタッチ状態が変更されると、Compute Engine 永続ディスクのスナップショット オペレーションは失敗します。このエラーをトリガーする一般的なシナリオは次のとおりです。
- ノードの自動修復: 異常なノードが再作成されると、Pod が 再スケジュールされ、ディスクがデタッチされて再アタッチされます。
- ノードのアップグレード: ノードプールのアップグレード中、通常はノードがドレインされて 置き換えられます。Pod は正常に終了し、新しいノードに再スケジュールされるため、ディスクのデタッチと再アタッチのサイクルがトリガーされます。
- クラスタの自動スケーリング: スケールダウン イベント中に、クラスタ オートスケーラーがノードを削除すると、そのノード上の永続ディスクを持つ Pod が強制排除され、ディスクがデタッチされます。これらの Pod が別の場所に再スケジュールされると、新しいノードでアタッチが発生します。スケールアップ イベント中、新しいノードでは再アタッチは直接発生しませんが、それらにスケジュールされた Pod によって最初のアタッチがトリガーされます。
これは一時的なエラーです。通常、ディスクのアタッチが安定すると、次の自動実行でバックアップは成功します。クラスタ イベントがバックアップに影響しないようにするには、次の推奨事項を適用します。
スマート スケジューリングを有効にする: スマート スケジューリング (RPO ベースのスケジュール)を使用してバックアップ プランを構成します。これにより、バックアップ プランの全体的な RPO に影響を与えることなく、指定した時間枠内で一時的な障害を自動的に再試行できます。
バックアップ除外期間を設定する: ノードプール のアップグレードまたはクラスタのサイズ変更オペレーションを実行する場合は、その間隔でバックアップ設定に バックアップ除外期間 を追加します。これにより、クラスタがディスク アタッチメントをアクティブに変更している間、Backup for GKE サービスは一時停止し、スナップショットのスケジュール設定を回避します。
手動バックアップを再試行する: 手動バックアップまたはオンデマンド バックアップの場合は、クラスタ イベントが終了したらバックアップ オペレーションを再試行します。
オペレーションが引き続き失敗する場合は、Cloud カスタマーケアにお問い合わせください。