排查 Backup for GKE 中的系统错误

本页面介绍了您在使用 Backup for GKE 时可能会遇到的系统相关错误、备份资源时需要考虑的事项,以及问题排查步骤。

错误 100020102:严格宽容模式 - 备份 CRD 失败 - 不支持 v1beta1 API 版本

当尝试备份最初以 apiextensions.k8s.io/v1beta1 版本应用的 CustomResourceDefinition 时,如果因缺少 apiextensions.k8s.io/v1 API 版本中所需的结构化架构而失败,则会发生错误 100020102。此错误会导致以下错误消息:Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version

出现此错误的原因是 apiextensions.k8s.io/v1 API 版本已在 Google Kubernetes Engine 1.22 版中被移除。如需详细了解 GKE 1.22 版中移除的 API,请参阅 GKE v1.22 中移除的 API

非宽容模式下的备份操作行为

在非宽容模式或严格备份方案中,如果备份操作遇到无法备份的资源(例如使用 v1beta1 API 创建的 CustomResourceDefinition),则备份操作会失败。出现此错误是因为资源缺少 v1 API 所需的结构化架构。如果存在此 CustomResourceDefinition,则会被视为严重错误,因为它可能无法正确恢复到较新的集群。

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

  1. 运行 kubectl get crd 命令,找出有问题的 CustomResourceDefinition

    kubectl get crd CRD_NAME
    

    CRD_NAME 替换为错误消息中的 CustomResourceDefinition 的名称。

  2. 在 YAML 输出中,通过查找以下条件来确认 CustomResourceDefinition 是否已从 vbeta1 API 正确转换为 v1 API:

    1. spec.versions:通过查看 spec.versions 字段下列出的每个版本,找到 spec.versions 条件。如果任何 spec.versions 缺少 schema.openAIV3Schema 字段,则表示 CustomResourceDefinition 没有为相应版本定义结构化架构。

    2. status.conditions:通过查找 type:NonStructuralSchema 条件来找到 status.conditions 条件。如果 status.conditionsstatustrue,则表明该架构不是结构化架构。

  3. 按照以下步骤将 CustomResourceDefinition 升级到 v1 API 版本:

    1. 通过添加结构化架构来修改现有 CustomResourceDefinition,使其与 v1 标准兼容,该架构定义了自定义资源的每个字段及其类型。如需详细了解如何添加结构化架构,请参阅指定结构化架构

    2. 将兼容的 v1 清单应用到您的集群。

  4. 如果升级成功,请重新尝试备份操作。否则,请使用以下方法之一来解决此问题:

    • 如果集群中未使用 CustomResourceDefinition,请运行 kubectl delete crd 命令删除 CustomResourceDefinition

      kubectl delete crd CRD_NAME
      

      CRD_NAME 替换为您要删除的 CustomResourceDefinition 的名称。

    • 对备份方案启用宽容模式,这样一来,Backup for GKE 便可跳过资源(包括 v1beta1 API 版本中的 CustomResourceDefinitions),并继续执行其余的备份操作。如需详细了解如何启用宽容模式,请参阅对备份方案启用宽容模式

  5. 重新尝试备份操作。如果操作仍失败,请与 Cloud Customer Care 联系以获取进一步帮助。

后续步骤