排解 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 永久磁碟,就可能發生錯誤。不過,系統在 Cloud de Confiance by S3NS 專案中找不到 PersistentVolume 設定中指定的名稱和位置。因此,Backup for GKE 無法繼續備份不存在的磁碟,並發生失敗。

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

  1. 找出有問題的 PersistentVolumeClaimPersistentVolume。 有問題的 PersistentVolumeClaim 和相關聯的 PersistentVolume 名稱都會列在備份 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. 請使用下列其中一種方法,確認磁碟是否位於 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 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 團隊聯絡,尋求進一步協助。

錯誤 100010202:磁碟區快照建立失敗

如果 Compute Engine 永久磁碟快照建立作業失敗,就會發生 100010202 錯誤,並顯示 Snapshotting volume failed 錯誤訊息。

如果磁碟在 Backup for GKE 服務啟動快照建立程序期間,與虛擬機器 (VM) 執行個體的連結狀態發生變化,Compute Engine 永久磁碟快照作業就會失敗。常見的觸發情境包括:

  • 節點自動修復:系統會重新建立健康狀態不良的節點,導致 Pod 重新排定時程,並卸離及重新連結磁碟。
  • 節點升級:在節點集區升級期間,節點通常會排空並替換。Pod 會正常終止,並重新排定在新節點上執行,觸發磁碟卸離和重新連接週期。
  • 叢集自動調度資源:在縮減事件期間,如果叢集自動調度器移除節點,該節點上具有永久磁碟的任何 Pod 都會遭到驅逐,導致磁碟分離。如果這些 Pod 在其他位置重新排程,附件會出現在新節點上。在擴充事件期間,新節點不會直接導致重新附加,但排程在這些節點上的 Pod 會觸發初始附加。

這是暫時性錯誤。磁碟附加作業穩定後,下次自動執行備份時通常就會成功。為避免叢集事件影響備份作業,請套用下列建議:

  1. 啟用智慧排程:使用智慧排程 (以 RPO 為準的排程) 設定備份方案。這樣一來,系統就能在您指定的時間範圍內自動重試暫時性失敗,不會影響備份計畫的整體 RPO。

  2. 設定備份排除時段:如果您要執行節點集區升級或叢集大小調整作業,請在這些間隔期間,將備份排除時段新增至備份設定。這可確保 Backup for GKE 服務會暫停,並避免在叢集主動修改磁碟附件時排定快照。

  3. 重試手動備份:如果是手動或隨選備份,請在叢集事件完成後重試備份作業。

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

後續步驟