Resolver problemas de erros do sistema no Backup para GKE

Nesta página, descrevemos erros relacionados ao sistema que podem ocorrer ao usar o Backup para GKE, o que considerar ao fazer backup de recursos e as etapas para resolver o problema.

Erro 100010108: falha ao fazer backup do PersistentVolumeClaim. A CMEK do plano de backup está ausente para o disco criptografado

O erro 100010108 ocorre ao criar backups de volume com escopo regional, e a CMEK do plano de backup é obrigatória porque o cluster do GKE faz referência a um disco criptografado.

Entender o erro

Ao criar backups de volume com escopo regional, a CMEK do plano de backup é obrigatória se o cluster do GKE fizer referência a qualquer disco criptografado. Esse é um requisito estrito para backups de volume com escopo regional. Se o disco de origem estiver criptografado, o snapshot desse disco só será possível se uma CMEK do plano de backup for fornecida. Se o plano de backup não tiver essa configuração de CMEK, a criação do snapshot falhará e você verá uma mensagem de erro semelhante a esta:

failed to create snapshot as disk "pvc-1" is encrypted with CMEK "projects/proj1/locations/us-east1/keyRings/keyring1/cryptoKeys/key1/cryptoKeyVersions/1", but no Backup Plan CMEK is provided. Please add CMEK to the Backup Plan.

Etapas da solução de problemas

  1. Identifique a configuração de CMEK ausente: a mensagem de erro confirma que o PVC que está sendo feito backup está criptografado, mas a configuração do plano de backup não tem uma chave de criptografia.
  2. Adicione uma CMEK ao plano de backup: atualize a configuração do plano de backup para incluir uma chave de criptografia gerenciada pelo cliente (CMEK). Essa chave será usada para criptografar os dados de backup, incluindo os backups de volume com escopo regional.
  3. Garanta as permissões adequadas: verifique se o agente de serviço do Backup para GKE (service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com) tem o papel roles/cloudkms.cryptoKeyEncrypterDecrypter atribuído à CMEK recém-adicionada.
  4. Teste novamente a operação de backup: depois que o plano de backup for atualizado com a CMEK e as permissões forem concedidas, tente novamente a operação de backup.

Erro 100020102: modo permissivo estrito. Falha ao fazer backup da CRD. Versão da API v1beta1 não compatível

O erro 100020102 ocorre quando uma tentativa de fazer backup de uma CustomResourceDefinition que foi originalmente aplicada 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. Esse erro resulta na seguinte mensagem de erro: Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.

Esse 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 Remoções de API para o GKE v1.22.

Comportamento da operação de backup no modo não permissivo

No modo não permissivo ou em um plano de backup estrito, a operação de backup falha se encontrar um recurso que não pode ser feito backup, como uma CustomResourceDefinition criada com a API v1beta1. Esse erro ocorre porque o recurso não tem o esquema estrutural exigido pela API v1. A presença dessa CustomResourceDefinition é considerada um erro crítico porque ela pode não ser restaurada corretamente em um cluster mais recente.

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

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

    kubectl get crd CRD_NAME
    

    Substitua CRD_NAME pelo nome da CustomResourceDefinition na mensagem de erro.

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

    1. spec.versions: localize a condição spec.versions examinando cada versão listada no campo spec.versions. Se alguma das spec.versions não tiver o campo schema.openAIV3Schema, a CustomResourceDefinition não terá 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 status.conditions's status for true, ele confirma explicitamente que o esquema não é estrutural.

  3. Faça upgrade da CustomResourceDefinition para a versão da API v1 seguindo estas etapas:

    1. Edite a CustomResourceDefinition atual para torná-la compatível com o padrão v1 adicionando um esquema estrutural que define cada campo e o tipo dele no recurso personalizado. Para mais informações sobre como adicionar um esquema estrutural, consulte Como especificar um esquema estrutural.

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

  4. Se o upgrade for bem-sucedido, tente novamente a operação de backup. Caso contrário, use um dos seguintes métodos para resolver o problema:

    • Exclua a CustomResourceDefinition executando o comando kubectl delete crd se a CustomResourceDefinition não estiver sendo usada no cluster.

      kubectl delete crd CRD_NAME
      

      Substitua CRD_NAME pelo nome da CustomResourceDefinition que você quer excluir.

    • Ative o modo permissivo no plano de backup, que permite que o Backup para GKE pule o recurso, incluindo CustomResourceDefinitions na versão da API v1beta1, e continue com o restante da operação de backup. Para mais informações sobre como ativar o modo permissivo, consulte Ativar o modo permissivo em um plano de backup.

  5. Tente novamente a operação de backup. Se a operação continuar falhando, entre em contato com o Cloud Customer Care para receber mais ajuda.

Erro 100040102: namespace não encontrado

O erro 100040102 ocorre quando uma tentativa de realizar uma operação de backup falha porque um namespace especificado no escopo de backup não pode ser encontrado no cluster. O agente do Backup para GKE não conseguiu localizar um ou mais namespaces que foram listados explicitamente no campo selectedNamespaces da configuração BackupPlan. O Backup para GKE exige que todos os namespaces especificados estejam presentes no cluster no momento em que a operação de backup é iniciada. A falha ao encontrar o namespace resulta na seguinte mensagem de erro:

Namespace [NAMESPACE_NAME] is not found.

Para resolver esse problema, siga estas instruções:

  1. Verifique se o namespace foi inserido corretamente conferindo a lista selectedNamespaces na configuração BackupPlan.

  2. Confirme se o namespace informado na mensagem de erro existe executando o comando kubectl get namespace:

    kubectl get namespace NAMESPACE_NAME
    

    Substitua NAMESPACE_NAME pelo nome do namespace informado na mensagem de erro.

    Se o namespace não existir, uma mensagem vai aparecer informando que o namespace não foi encontrado, por exemplo, Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not found.

  3. Corrija o BackupPlan. Se o namespace estiver digitado incorretamente, atualize o BackupPlan com o nome correto do namespace. Se o namespace realmente não existir mais e não precisar ser feito backup, remova-o da lista selectedNamespaces na configuração BackupPlan.

  4. Tente novamente a operação de backup depois de fazer as correções necessárias no BackupPlan e inicie um novo backup.

Se a operação continuar falhando, entre em contato com o Cloud Customer Care para receber mais ajuda.

A seguir