本页面介绍了您在使用 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 永久性磁盘时,可能会发生错误。但是,在
您的 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 联系以获取进一步帮助。
错误 100010202:创建卷快照失败
当 Compute Engine 永久性磁盘快照创建失败时,会发生错误 100010202,从而导致错误消息显示
Snapshotting volume failed。
如果磁盘与虚拟机 (VM) 实例的挂接状态在 Backup for GKE 服务启动的快照创建过程中发生变化,则 Compute Engine 永久性磁盘快照操作会失败。触发此错误的常见场景包括:
- 节点自动修复:系统会重新创建运行状况不佳的节点,这会导致 Pod 重新调度,磁盘分离并重新挂接。
- 节点升级:在节点池升级期间,节点通常会被排空 并替换。Pod 会正常终止并重新调度到新节点上,从而触发磁盘分离和重新挂接周期。
- 集群自动扩缩:在缩容事件期间,如果集群自动扩缩器 移除某个节点,则该节点上具有永久性磁盘的所有 Pod 都会被逐出, 从而导致磁盘分离。如果这些 Pod 被重新调度到其他位置,则会在新节点上发生挂接。在扩容事件期间,新节点不会直接导致重新挂接,但调度到这些节点上的 Pod 会触发初始挂接。
这是一个暂时性错误。磁盘挂接稳定后,备份通常会在下一次自动运行中成功。为防止集群事件影响备份,请应用以下建议:
启用智能规划:使用 智能规划 (基于 RPO 的时间表)配置备份计划。这样,系统就可以在您指定的时间窗口内自动重试暂时性失败,而不会影响备份计划的总体 RPO。
设置备份排除窗口:如果您要执行节点池 升级或集群调整大小操作,请在这些时间间隔内向备份设置添加 备份排除窗口 。这样可确保 Backup for GKE 服务在集群主动修改磁盘挂接时暂停并避免安排快照。
重试手动备份:对于手动备份或按需备份,请在集群事件完成后重试 备份操作。
如果操作仍失败,请与 Cloud Customer Care 联系以获取进一步帮助。