排解 Backup for GKE 中的儲存空間錯誤

本頁面說明使用 Backup for GKE 時可能發生的儲存空間相關錯誤、執行動作時應注意的事項,以及如何排解問題。

錯誤 100010105:無法備份 PersistentVolumeClaim - PersistentVolume 參照的磁碟不存在

嘗試備份 PersistentVolumeClaim 時,如果參照的磁碟不存在,就會發生錯誤 100010105,並顯示「Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist」錯誤訊息。

在 Google Kubernetes Engine 中,PersistentVolumeClaimsPersistentVolumes要求儲存空間。而 PersistentVolume 則代表一塊儲存空間,通常是底層的 Compute Engine 永久磁碟。如果 PersistentVolumeClaim 繫結至 PersistentVolume,且 PersistentVolume 的設定指定了 Compute Engine 永久磁碟,就可能發生錯誤。不過,系統在您的 Google Cloud 專案中找不到 PersistentVolume 設定中指定的名稱和位置。因此,Backup for GKE 無法備份不存在的磁碟,並會發生失敗。

如要解決這項錯誤,請按照下列說明操作:

  1. 找出有問題的 PersistentVolumeClaimPersistentVolume。 有問題的 PersistentVolumeClaim 和相關聯的 PersistentVolume 名稱都會列在失敗的 Backup for GKE 作業的 state reason 欄位中。建議您記錄PersistentVolumeClaim名稱、命名空間和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 foundThe resource DISK_NAME was not found 錯誤訊息,表示磁碟不存在。請依據最符合需求的狀況,使用下列其中一種方法解決問題:

    • 如果磁碟遭誤刪或命名錯誤,但您想保留資料或 PersistentVolumeClaim,或是 PersistentVolume 設定的磁碟名稱有誤,請使用下列任一方法解決問題:

      • 還原磁碟:如果磁碟有備份,請使用 PersistentVolume 參照的完全相同名稱和位置還原磁碟。

      • 建立新磁碟:如果無法還原磁碟,請建立與 PersistentVolume 設定中名稱和位置相同的新磁碟。

    • 如果不再需要 PersistentVolumeClaimPersistentVolume、相關資料或應用程式,建議移除不需要的實體:

      • 刪除 PersistentVolumeClaim:使用 kubectl 指令列工具執行 kubectl delete pvc 指令,刪除 PersistentVolumeClaim
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      更改下列內容:

      • PVC_NAME:要刪除的 PersistentVolumeClaim 名稱。

      • NAMESPACE:要刪除的 PersistentVolumeClaim 命名空間。

    • 刪除 PersistentVolumeClaim 後,PersistentVolume 仍存在: 如果 PersistentVolumePersistentVolumeReclaimPolicy 設為 Delete,則刪除 PersistentVolumeClaim 時,PersistentVolume 會自動刪除。如果 persistentVolumeReclaimPolicy 設為 Retain,您必須在刪除 PersistentVolumeClaim 後手動刪除 PersistentVolume。如要刪除 PersistentVolume,請使用 kubectl 指令列工具執行 kubectl delete pv 指令:

      kubectl delete pv PV_NAME
      

      PV_NAME 替換為要刪除的 PersistentVolume 名稱。

如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。