本页面介绍了您在使用 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
,则会被视为严重错误,因为它可能无法正确恢复到较新的集群。
如需解决此错误,请按照以下说明操作:
运行
kubectl get crd
命令,找出有问题的CustomResourceDefinition
:kubectl get crd CRD_NAME
将
CRD_NAME
替换为错误消息中的CustomResourceDefinition
的名称。在 YAML 输出中,通过查找以下条件来确认
CustomResourceDefinition
是否已从vbeta1
API 正确转换为v1
API:spec.versions
:通过查看spec.versions
字段下列出的每个版本,找到spec.versions
条件。如果任何spec.versions
缺少schema.openAIV3Schema
字段,则表示CustomResourceDefinition
没有为相应版本定义结构化架构。status.conditions
:通过查找type:NonStructuralSchema
条件来找到status.conditions
条件。如果status.conditions
的status
为true
,则表明该架构不是结构化架构。
按照以下步骤将
CustomResourceDefinition
升级到v1
API 版本:通过添加结构化架构来修改现有
CustomResourceDefinition
,使其与v1
标准兼容,该架构定义了自定义资源的每个字段及其类型。如需详细了解如何添加结构化架构,请参阅指定结构化架构。将兼容的
v1
清单应用到您的集群。
如果升级成功,请重新尝试备份操作。否则,请使用以下方法之一来解决此问题:
如果集群中未使用
CustomResourceDefinition
,请运行kubectl delete crd
命令删除CustomResourceDefinition
。kubectl delete crd CRD_NAME
将
CRD_NAME
替换为您要删除的CustomResourceDefinition
的名称。对备份方案启用宽容模式,这样一来,Backup for GKE 便可跳过资源(包括
v1beta1
API 版本中的CustomResourceDefinitions
),并继续执行其余的备份操作。如需详细了解如何启用宽容模式,请参阅对备份方案启用宽容模式。
重新尝试备份操作。如果操作仍失败,请与 Cloud Customer Care 联系以获取进一步帮助。