Resolva problemas de erros do sistema na Cópia de segurança do GKE

Esta página descreve os erros relacionados com o sistema que pode ter quando usa o Backup for GKE, aspetos a ter em conta quando faz uma cópia de segurança dos recursos e os passos para resolver o problema.

Erro 100020102: modo permissivo rigoroso: falha na cópia de segurança do CRD: versão da API v1beta1 não suportada

O erro 100020102 ocorre quando uma tentativa de fazer uma cópia de segurança de um CustomResourceDefinition que foi originalmente aplicado como uma versão apiextensions.k8s.io/v1beta1 falha porque não tem o esquema estrutural necessário na versão da API apiextensions.k8s.io/v1. Este erro resulta na seguinte mensagem de erro: Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.

Este erro ocorre porque a versão da API apiextensions.k8s.io/v1 foi removida na versão 1.22 do Google Kubernetes Engine. Para mais informações sobre a remoção da API para a versão 1.22 do GKE, consulte o artigo Remoções de APIs para o GKE v1.22.

Comportamento da operação de cópia de segurança no modo não permissivo

No modo não permissivo ou num plano de cópia de segurança rigoroso, a operação de cópia de segurança falha se encontrar um recurso do qual não é possível fazer uma cópia de segurança, como um CustomResourceDefinition que foi criado com a API v1beta1. Este erro ocorre porque o recurso não tem o esquema estrutural exigido pela API v1. A presença deste CustomResourceDefinition é considerada um erro crítico porque pode não ser restaurado corretamente para um cluster mais recente.

Para resolver este erro, siga estas instruções:

  1. Identifique o CustomResourceDefinition problemático executando o comando kubectl get crd:

    kubectl get crd CRD_NAME
    

    Substitua CRD_NAME pelo nome do CustomResourceDefinition na mensagem de erro.

  2. Na saída YAML, confirme se o CustomResourceDefinitionfoi convertido corretamente da API vbeta1 para a API v1 localizando as seguintes condições:

    1. spec.versions: localize a condição spec.versions ao procurar em cada versão apresentada no campo spec.versions. Se algum dos spec.versions não tiver o campo schema.openAIV3Schema, o CustomResourceDefinition não tem um esquema estrutural definido para essa versão.

    2. status.conditions: localize a condição status.conditions encontrando a condição type:NonStructuralSchema. Se o valor de status.conditions for status, confirma explicitamente que o esquema não é estrutural.true

  3. Atualize a versão da API CustomResourceDefinition para v1 através dos seguintes passos:

    1. Edite o CustomResourceDefinition existente para o tornar compatível com a norma v1 adicionando um esquema estrutural que defina todos os campos e o respetivo tipo no recurso personalizado. Para mais informações sobre como adicionar um esquema estrutural, consulte o artigo Especificar um esquema estrutural.

    2. Aplique o manifesto v1 compatível ao seu cluster.

  4. Se a atualização for bem-sucedida, tente novamente a operação de cópia de segurança. Caso contrário, use um dos seguintes métodos para resolver o problema:

    • Elimine o CustomResourceDefinition executando o comando kubectl delete crd se o CustomResourceDefinition não estiver a ser usado no cluster.

      kubectl delete crd CRD_NAME
      

      Substitua CRD_NAME pelo nome do CustomResourceDefinitionque quer eliminar.

    • Ative o modo permissivo no plano de cópia de segurança, o que permite que o Backup for GKE ignore o recurso, incluindo CustomResourceDefinitions na versão da API v1beta1, e continue com o resto da operação de cópia de segurança. Para mais informações sobre como ativar o modo permissivo, consulte o artigo Ative o modo permissivo num plano de cópia de segurança.

  5. Tente novamente a operação de cópia de segurança. Se a operação continuar a falhar, contacte o apoio ao cliente do Google Cloud para receber assistência adicional.

O que se segue?