排查 Backup for GKE 中的存储错误

本页面介绍了您在使用 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 绑定到 PersistentVolumePersistentVolume 的配置指定了 Compute Engine 永久性磁盘时,可能会发生错误。但是,在 您的 Cloud de Confiance by S3NS 项目中找不到 PersistentVolume 配置中指定的名称和 位置的实际磁盘。因此,Backup for GKE 无法继续备份不存在的磁盘,从而导致失败。

如需解决此错误,请按照以下说明操作:

  1. 找出有问题的 PersistentVolumeClaimPersistentVolume。 有问题的 PersistentVolumeClaim 及其关联的 PersistentVolume 的名称都列在失败的 Backup for 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

如果磁盘与虚拟机 (VM) 实例的挂接状态在 Backup for GKE 服务启动的快照创建过程中发生变化,则 Compute Engine 永久性磁盘快照操作会失败。触发此错误的常见场景包括:

  • 节点自动修复:系统会重新创建运行状况不佳的节点,这会导致 Pod 重新调度,磁盘分离并重新挂接。
  • 节点升级:在节点池升级期间,节点通常会被排空 并替换。Pod 会正常终止并重新调度到新节点上,从而触发磁盘分离和重新挂接周期。
  • 集群自动扩缩:在缩容事件期间,如果集群自动扩缩器 移除某个节点,则该节点上具有永久性磁盘的所有 Pod 都会被逐出, 从而导致磁盘分离。如果这些 Pod 被重新调度到其他位置,则会在新节点上发生挂接。在扩容事件期间,新节点不会直接导致重新挂接,但调度到这些节点上的 Pod 会触发初始挂接。

这是一个暂时性错误。磁盘挂接稳定后,备份通常会在下一次自动运行中成功。为防止集群事件影响备份,请应用以下建议:

  1. 启用智能规划:使用 智能规划 (基于 RPO 的时间表)配置备份计划。这样,系统就可以在您指定的时间窗口内自动重试暂时性失败,而不会影响备份计划的总体 RPO。

  2. 设置备份排除窗口:如果您要执行节点池 升级或集群调整大小操作,请在这些时间间隔内向备份设置添加 备份排除窗口 。这样可确保 Backup for GKE 服务在集群主动修改磁盘挂接时暂停并避免安排快照。

  3. 重试手动备份:对于手动备份或按需备份,请在集群事件完成后重试 备份操作。

如果操作仍失败,请与 Cloud Customer Care 联系以获取进一步帮助。

后续步骤