本页面介绍了使用 Backup for GKE 时可能会遇到的与存储相关的错误、执行操作时需要考虑的事项,以及问题排查步骤。
错误 100010105:无法备份 PersistentVolumeClaim - PersistentVolume 引用的磁盘不存在
当尝试备份 PersistentVolumeClaim
失败时,会发生错误 100010105
,因为该备份引用了不存在的磁盘,导致出现错误消息 Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist
。
在 Google Kubernetes Engine 中,从 PersistentVolumes
请求 PersistentVolumeClaims
存储空间。而 PersistentVolume
则表示一块存储空间,通常是底层的 Compute Engine 永久性磁盘。当 PersistentVolumeClaim
绑定到 PersistentVolume
且 PersistentVolume
的配置指定了 Compute Engine 永久性磁盘时,可能会发生错误。不过,在您的 Google Cloud 项目中找不到 PersistentVolume
配置中指定的名称和位置的实际磁盘。因此,Backup for GKE 无法继续备份不存在的磁盘,并发生故障。
如需解决此错误,请按照以下说明操作:
确定存在问题的
PersistentVolumeClaim
和PersistentVolume
。 有问题PersistentVolumeClaim
的名称及其关联的PersistentVolume
的名称均列在失败的 Backup for 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
来识别磁盘名称和可用区。使用以下方法之一验证磁盘是否存在于您的 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_NAME
将
PV_NAME
替换为您要删除的PersistentVolume
的名称。
如果操作仍失败,请与 Cloud Customer Care 联系以获取进一步帮助。