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