Share via


Solucionar problemas de backup e restauração do Serviço Kubernetes do Azure

Este artigo fornece etapas de solução de problemas que ajudam a resolver erros de backup, restauração e gerenciamento do Serviço Kubernetes do Azure (AKS).

Resoluções de erros de instalação do AKS Backup Extension

Cenário 1

Mensagem de erro:

{Helm installation from path [] for release [azure-aks-backup] failed with the following error: err [release azure-aks-backup failed, and has been uninstalled due to atomic being set: failed post-install: timed out waiting for the condition]} occurred while doing the operation: {Installing the extension} on the config"`

Causa: A extensão foi instalada com êxito, mas os pods não estão sendo gerados porque a computação e a memória necessárias não estão disponíveis para os pods.

Resolução: para resolver o problema, aumente o número de nós no cluster, permitindo que computação e memória suficientes estejam disponíveis para os pods gerarem. Para dimensionar o pool de nós no portal do Azure, siga estas etapas:

  1. No portal do Azure, abra o cluster AKS.
  2. Vá para Pools de nós em Configurações.
  3. Selecione Dimensionar pool de nós e atualize os valores mínimo e máximo no intervalo de contagem de nós.
  4. Selecione Aplicar.

Cenário 2

Mensagem de erro:

BackupStorageLocation "default" is unavailable: rpc error: code = Unknown desc = azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://management.azure.com/subscriptions/e30af180-aa96-4d81-981a-b67570b0d615/resourceGroups/AzureBackupRG_westeurope_1/providers/Microsoft.Storage/storageAccounts/devhayyabackup/listKeys?%24expand=kerb&api-version=2019-06-01: StatusCode=404 -- Original Error: adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID 4e95##### REDACTED #####0777`

Endpoint http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=4e95dcc5-a769-4745-b2d9-

Causa: Quando você habilita a identidade gerenciada por pod em seu cluster AKS, uma AzurePodIdentityException chamada aks-addon-exception é adicionada ao namespace kube-system . Um AzurePodIdentityException permite que pods com determinados rótulos acessem o ponto de extremidade IMDS (Serviço de Metadados de Instância do Azure) não são intercetados pelo servidor NMI.

Os pods de extensão não são isentos e exigem que a identidade do pod do Microsoft Entra seja ativada manualmente.

Resolução: crie uma exceção pod-identity no cluster AKS (que funciona apenas para dataprotection-microsoft namespace e não kube-system). Mais informações.

  1. Execute o seguinte comando:

    az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
    
  2. Para verificar Azurepodidentityexceptions no cluster, execute o seguinte comando:

    kubectl get Azurepodidentityexceptions --all-namespaces
    
  3. Para atribuir a função de Colaborador de Dados de Blob de Armazenamento à identidade da extensão, execute o seguinte comando:

    az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name aksclustername --resource-group aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/subscriptionid/resourceGroups/storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/storageaccountname
    

Cenário 3

Mensagem de erro:

{"Message":"Error in the getting the Configurations: error {Post \https://centralus.dp.kubernetesconfiguration.azure.com/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /provider/managedclusters/clusters/ aksclustername /configurations/getPendingConfigs?api-version=2021-11-01\: dial tcp: lookup centralus.dp.kubernetesconfiguration.azure.com on 10.63.136.10:53: no such host}","LogType":"ConfigAgentTrace","LogLevel":"Error","Environment":"prod","Role":"ClusterConfigAgent","Location":"centralus","ArmId":"/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /providers/Microsoft.ContainerService/managedclusters/ aksclustername ","CorrelationId":"","AgentName":"ConfigAgent","AgentVersion":"1.8.14","AgentTimestamp":"2023/01/19 20:24:16"}`

Causa: FQDN/regras de aplicativo específicas são necessárias para usar extensões de cluster nos clusters AKS. Mais informações.

Este erro aparece devido à ausência dessas regras FQDN devido às quais as informações de configuração do serviço Extensões de Cluster não estavam disponíveis.

Resolução: para resolver o problema, você precisa criar uma substituição personalizada CoreDNS para que o ponto de extremidade do ponto de extremidade passe pela rede pública.

  1. Obtenha o YAML personalizado CoreDNS existente em seu cluster (salve-o em seu local para referência mais tarde)::

    kubectl get configmap coredns-custom -n kube-system -o yaml
    
  2. Substitua o mapeamento do ponto de extremidade central do DP para IP público (use o YAML abaixo):

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom 
      namespace: kube-system
    data:
        aksdp.override: |
              hosts { 
                  20.40.200.153 centralus.dp.kubernetesconfiguration.azure.com
                  fallthrough
               }
    

    Agora execute o comando abaixo para aplicar o arquivo yaml de atualização:

    kubectl apply -f corednsms.yaml
    
  3. Para forçar a recarga coredns de pods, execute o seguinte comando:

    kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
    
  4. Para executar NSlookup a partir do pod ExtensionAgent para verificar se coreDNS-custom está funcionando, execute o seguinte comando:

    kubectl exec -i -t pod/extension-agent-<pod guid that's there in your cluster> -n kube-system -- nslookup centralus.dp.kubernetesconfiguration.azure.com
    
  5. Para verificar os logs do pod ExtensionAgent , execute o seguinte comando:

    kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
    
  6. Exclua e reinstale a extensão de backup para iniciar o backup.

Extensão de backup após a instalação erros relacionados

Esses códigos de erro aparecem devido a problemas na extensão de backup instalada no cluster AKS.

KubernetesBackupListExtensionsError:

Causa: o cofre de backup como parte de uma validação, verifica se o cluster tem a extensão de backup instalada. Para isso, o MSI do Vault precisa de uma permissão de leitor no cluster AKS que lhe permita listar todas as extensões instaladas no cluster.

Ação recomendada: Reatribua a função Leitor ao MSI do Vault (remova a atribuição de função existente e atribua a função de Leitor novamente), porque a função de Leitor atribuída não tem a permissão de extensão de lista nela. Se a reatribuição falhar, use um cofre de backup diferente para configurar o backup.

UserErrorKubernetesBackupExtensionNotFoundError

Causa: como parte da validação, o cofre de backup verifica se o cluster tem a extensão de backup instalada. O Vault executa uma operação para listar as extensões instaladas no cluster. Se a extensão de backup estiver ausente na lista, esse erro será exibido.

Ação recomendada: use a CL ou o cliente do portal do Azure para excluir a extensão e instale a extensão novamente.

UserErrorKubernetesBackupExtensionHasErrors

Causa: A extensão de backup instalada no cluster tem alguns erros internos.

Ação recomendada: use a CL ou o cliente do portal do Azure para excluir a extensão e instale a extensão novamente.

UserErrorKubernetesBackupExtensionIdentityNotFound

Causa: o backup do AKS requer uma extensão de backup instalada no cluster. A extensão, juntamente com sua instalação, tem uma identidade de usuário criada chamada extensão MSI. Este MSI é criado no Grupo de Recursos que inclui os conjuntos de nós do cluster do AKS. Este MSI obtém as funções necessárias atribuídas para acessar o local de armazenamento de backup. O código de erro sugere que a identidade da extensão está faltando.

Ação recomendada: use a CLI ou o cliente do portal do Azure para excluir a extensão e instale a extensão novamente. Uma nova identidade é criada junto com a extensão.

KubernetesBackupCustomResourcesTrackingTimeOutError

Causa: o Backup do Azure para AKS requer uma extensão de Backup para ser instalada no cluster. Para executar as operações de backup e restauração, recursos personalizados são criados no cluster. Os pods de geração de extensão que executam operações relacionadas ao backup por meio desses CRs. Este erro ocorre quando a extensão não é capaz de atualizar o status desses CRs.

Ação recomendada: A integridade da extensão deve ser verificada através da execução do comando kubectl get pods -n dataprotection.microsoft. Se os pods não estiverem em estado de execução, aumente o número de nós no cluster em 1 ou aumente os limites de computação. Em seguida, aguarde alguns minutos e execute o comando novamente, o que deve mudar o estado dos pods para execução. Se o problema persistir, exclua e reinstale a extensão.

BackupPluginDeleteBackupOperationFailed

Causa: A extensão de backup deve estar em execução para excluir os backups.

Ação recomendada: Se o cluster estiver em execução, verifique se a extensão está sendo executada em um estado íntegro. Verifique se os pods de extensão estão desovando, caso contrário, aumente os nós. Se isso falhar, tente excluir e reinstalar a extensão. Se o cluster de backup for excluído, exclua manualmente os instantâneos e os metadados.

ExtensionTimedOutWaitingForBackupItemSync

Causa: a extensão de backup aguarda que os itens de backup sejam sincronizados com a conta de armazenamento.

Ação recomendada: Se esse código de erro aparecer, tente novamente a operação de backup ou reinstale a extensão.

Erros baseados no local de armazenamento de backup

Esses códigos de erro aparecem devido a problemas baseados na extensão de backup instalada no cluster AKS.

UserErrorDeleteBackupFailedBackupStorageLocationReadOnly

Causa: A conta de armazenamento fornecida como entrada durante a instalação da extensão de backup está no estado somente leitura, o que não permite excluir os dados de backup do contêiner de blob.

Ação recomendada: altere o estado da conta de armazenamento de somente leitura para gravação.

UserErrorDeleteBackupFailedBackupStorageLocationNotFound

Causa: Durante a instalação da extensão, um local de armazenamento de backup deve ser fornecido como entrada que inclui uma conta de armazenamento e um contêiner de blob. Este erro aparece se o local for excluído ou adicionado incorretamente durante a instalação da extensão.

Ação recomendada: exclua a extensão de backup e reinstale-a com a conta de armazenamento correta e o contêiner de blob como entrada.

UserErrorBackupFailedBackupStorageLocationReadOnly

Causa: A conta de armazenamento fornecida como entrada durante a instalação da extensão de backup está no estado somente leitura, o que não permite gravar dados de backup no contêiner de blob.

Ação recomendada: altere o estado da conta de armazenamento de somente leitura para gravação.

UserErrorNoDefaultBackupStorageLocationFound

Causa: Durante a instalação da extensão, um local de armazenamento de backup deve ser fornecido como entrada, o que inclui uma conta de armazenamento e um contêiner de blob. O erro aparece se o local for excluído ou inserido incorretamente durante a instalação da extensão.

Ação recomendada: exclua a extensão de backup e reinstale-a com a conta de armazenamento correta e o contêiner de blob como entrada.

UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation

Causa: A extensão de backup deve ter a função de Colaborador de Dados de Blob de Armazenamento de Armazenamento no Local de Armazenamento de Backup (conta de armazenamento). A Identidade de Extensão recebe essa função atribuída.

Ação recomendada: se essa função estiver ausente, use o portal do Azure ou a CLI para reatribuir essa permissão ausente na conta de armazenamento.

UserErrorBackupStorageLocationNotReady

Causa: Durante a instalação da extensão, um local de armazenamento de backup deve ser fornecido como entrada que inclui uma conta de armazenamento e um contêiner de blob. A extensão de backup deve ter a função de Colaborador de Dados de Blob de Armazenamento de Armazenamento no Local de Armazenamento de Backup (conta de armazenamento). A Identidade de Extensão recebe essa função atribuída.

Ação recomendada: o erro aparece se a Identidade da Extensão não tiver as permissões corretas para acessar a conta de armazenamento. Este erro aparece se a extensão de backup AKS for instalada pela primeira vez ao configurar a operação de proteção. Isso acontece pelo tempo necessário para que as permissões concedidas se propaguem para a extensão de backup do AKS. Como solução alternativa, aguarde uma hora e tente novamente a configuração de proteção. Caso contrário, use o portal do Azure ou a CLI para reatribuir essa permissão ausente na conta de armazenamento.

Erros baseados em backup em cofre

Esse código de erro pode aparecer enquanto você ativa o backup do AKS para armazenar backups em um armazenamento de dados padrão do cofre.

DppUserErrorVaultTierPolicyNotSupported

Causa: esse código de erro aparece quando uma política de backup é criada com uma regra de retenção definida para armazenamento de dados padrão do cofre para um cofre de backup em uma região onde esse armazenamento de dados não é suportado.

Ação recomendada: atualize a regra de retenção com a duração padrão do cofre definida no portal do Azure:

  1. Selecione o ícone Editar ao lado da regra.

    A captura de tela mostra como editar a duração da retenção dos backups do AKS.

  2. Desmarque a caixa de seleção ao lado do padrão do Vault e selecione Atualizar.

    A captura de tela mostra a desmarcação da caixa de seleção padrão do cofre.

  3. Crie uma política de backup para backup de camada operacional (somente instantâneos para o cluster AKS).

Trabalhos de backup e restauração do AKS concluídos com avisos

UserErrorPVSnapshotDisallowedByPolicy

Código de erro: UserErrorPVSnapshotDisallowedByPolicy

Causa: uma política do Azure é atribuída por meio de uma assinatura que interrompe o driver CSI para tirar o instantâneo de volume.

Ação recomendada: remova a Política do Azure cessando a operação de instantâneo de disco e execute um backup sob demanda.

UserErrorPVSnapshotLimitReached

Código de erro: UserErrorPVSnapshotLimitReached

Causa: há um número limitado de instantâneos para um Volume Persistente que podem existir em um point-in-time. Para Volumes Persistentes baseados em Disco do Azure, o limite é de 500 instantâneos. Este erro aparece quando instantâneos para volumes persistentes específicos não são tirados devido à existência de instantâneos acima dos limites suportados.

Ação recomendada: atualize a política de backup para reduzir a duração da retenção e aguarde até que o Cofre de Backup exclua os pontos de recuperação mais antigos.

CSISnapshottingTimedOut

Código de erro: CSISnapshottingTimedOut

Causa: O snapshot falhou porque o driver CSI está sendo expirado para buscar a alça de snapshot.

Ação recomendada: revise os logs e tente novamente a operação para obter snapshots bem-sucedidos executando um backup sob demanda ou aguarde o próximo backup agendado.

UserErrorHookExecutionFailed

Código de erro: UserErrorHookExecutionFailed

Causa: quando os ganchos aplicados para serem executados junto com backups e restaurações encontraram um erro e não foram aplicados com êxito.

Ação recomendada: revise os logs, atualize os ganchos e tente novamente a operação de backup/restauração.

UserErrorNamespaceNotFound

Código de erro: UserErrorNamespaceNotFound

Causa: os namespaces fornecidos na Configuração de Backup estão ausentes durante a execução de backups. O namespace foi fornecido incorretamente ou foi excluído.

Ação recomendada: Verifique se os namespaces para backup são fornecidos corretamente.

UserErrorPVCHasNoVolume

Código de erro: UserErrorPVCHasNoVolume

Causa: A Declaração de Volume Persistente (PVC) no contexto não tem um Volume Persistente anexado a ela. Assim, o PVC não será copiado.

Ação recomendada: Anexe um volume ao PVC, se for necessário fazer backup.

UserErrorPVCNotBoundToVolume

Código de erro: UserErrorPVCNotBoundToVolume

Causa: O PVC no contexto está no estado Pendente e não tem um Volume Persistente anexado a ele. Assim, o PVC não será copiado.

Ação recomendada: Anexe um volume ao PVC, se for necessário fazer backup.

UserErrorPVNotFound

Código de erro: UserErrorPVNotFound

Causa: A mídia de armazenamento subjacente para o Volume Persistente está ausente.

Ação recomendada: Verifique e anexe um novo Volume Persistente com o meio de armazenamento real conectado.

UserErrorStorageClassMissingForPVC

Código de erro: UserErrorStorageClassMissingForPVC

Causa: o backup do AKS verifica a classe de armazenamento que está sendo usada e ignora o Volume Persistente de tirar instantâneos devido à indisponibilidade da classe.

Ação recomendada: atualize as especificações do PVC com a classe de armazenamento usada.

UserErrorSourceandTargetClusterCRDVersionMismatch

Código de erro: UserErrorSourceandTargetClusterCRDVersionMismatch

Causa: O cluster AKS de origem e o cluster AKS de destino durante a restauração têm versões diferentes de CRs FlowSchema e PriorityLevelConfigurations. Alguns recursos do Kubernetes não são restaurados devido à incompatibilidade nas versões do cluster.

Ação recomendada: use a mesma versão de cluster para o cluster de destino que o cluster de origem ou aplique manualmente as CRs.

Próximos passos