本頁說明使用 Backup for GKE 時可能發生的儲存空間相關錯誤、執行動作時應注意的事項,以及如何排解問題。
錯誤 100010105:無法備份 PersistentVolumeClaim - PersistentVolume 參照的磁碟不存在
嘗試備份 PersistentVolumeClaim 時,如果參照的磁碟不存在,就會發生錯誤 100010105,並顯示「Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist」錯誤訊息。
在 Google Kubernetes Engine 中,PersistentVolumeClaims從 PersistentVolumes 要求儲存空間。而 PersistentVolume 則代表一塊儲存空間,通常是底層的 Compute Engine 永久磁碟。如果 PersistentVolumeClaim 繫結至 PersistentVolume,且 PersistentVolume 的設定指定 Compute Engine 永久磁碟,就可能發生錯誤。不過,系統在 Cloud de Confiance by S3NS 專案中找不到 PersistentVolume 設定中指定的名稱和位置。因此,Backup for GKE 無法繼續備份不存在的磁碟,並發生失敗。
如要解決這項錯誤,請按照下列指示操作:
找出有問題的
PersistentVolumeClaim和PersistentVolume。 有問題的PersistentVolumeClaim和相關聯的PersistentVolume名稱都會列在備份 GKE 作業失敗的state reason欄位中。建議您記錄PersistentVolumeClaim名稱、命名空間和PersistentVolume名稱。檢查
PersistentVolume。如要說明PersistentVolume,請使用下列指令中,從狀態原因欄位識別出的PersistentVolume名稱:kubectl describe pv PERSISTENTVOLUME_NAME將
PERSISTENTVOLUME_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-name。使用從
PersistentVolume說明取得的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_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 會觸發初始附加。
這是暫時性錯誤。磁碟附加作業穩定後,下次自動執行備份時通常就會成功。為避免叢集事件影響備份作業,請套用下列建議:
啟用智慧排程:使用智慧排程 (以 RPO 為準的排程) 設定備份方案。這樣一來,系統就能在您指定的時間範圍內自動重試暫時性失敗,不會影響備份計畫的整體 RPO。
設定備份排除時段:如果您要執行節點集區升級或叢集大小調整作業,請在這些間隔期間,將備份排除時段新增至備份設定。這可確保 Backup for GKE 服務會暫停,並避免在叢集主動修改磁碟附件時排定快照。
重試手動備份:如果是手動或隨選備份,請在叢集事件完成後重試備份作業。
如果作業持續失敗,請與 Cloud Customer Care 團隊聯絡,尋求進一步協助。