Solucionar problemas de backup e restauração do Serviço de Kubernetes do Azure
Este artigo fornece etapas de solução de problemas que ajudam a solucionar erros de backup, restauração e gerenciamento do AKS (Serviço de Kubernetes do Azure).
Resoluções de erros de instalação da Extensão de Backup do AKS
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 a computação e a memória suficientes estejam disponíveis para os pods gerarem. Para dimensionar o pool de nós no portal do Azure, siga estas etapas:
- No portal do Azure, abra o cluster do AKS.
- Acesse Pools de nós em Configurações.
- Selecione Dimensionar pool de nós e atualize os valores mínimo e máximo no Intervalo de contagem de nós.
- Escolha 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 do AKS, um AzurePodIdentityException chamado aks-addon-exception é adicionada ao namespace kube-system. Um AzurePodIdentityException permite que pods com determinados rótulos acessem o ponto de extremidade do IMDS (Serviço de Metadados) sem serem interceptados pelo servidor de NMI.
Os pods de extensão não são isentos e exigem que a identidade do pod do Microsoft Entra seja habilitada manualmente.
Resolução: crie uma exceção pod-identity no cluster do AKS (que funciona apenas para o namespace dataprotection-microsoft e não para kube-system). Saiba mais.
Execute o comando a seguir:
az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
Para verificar Azurepodidentityexceptions no cluster, execute o seguinte comando:
kubectl get Azurepodidentityexceptions --all-namespaces
Para atribuir a função Colaborador de Dados do 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: regras específicas de FQDN/aplicativo são necessárias para usar extensões em clusters do AKS. Saiba mais.
Esse erro aparece devido à ausência dessas regras de FQDN devido às quais as informações de configuração do serviço de Extensões de Cluster não estavam disponíveis.
Resolução: para resolver o problema, é necessário criar uma substituição de CoreDNS-custom para que o ponto de extremidade DP passe pela rede pública.
Obter YAML personalizado do CoreDNS existente em seu cluster (salve no local para referência posterior):
kubectl get configmap coredns-custom -n kube-system -o yaml
Substitua o mapeamento do ponto de extremidade do DP centralizado para o 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
Para forçar o recarregamento de pods
coredns
, execute o seguinte comando:kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
Para executar
NSlookup
no 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
Para verificar 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
Exclua e reinstale a Extensão de Backup para iniciar o backup.
Erros relacionados à pós-instalação da extensão de Backup
Esses códigos de erro aparecem devido a problemas na extensão de Backup instalada no cluster do 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 Cofre precisa de uma permissão de leitura no cluster do AKS que permita listar todas as extensões instaladas no cluster.
Ação recomendada: reatribuir a função de Leitor ao MSI do Cofre (remover a atribuição de função existente e atribuir a função de Leitor novamente), porque a função de Leitor atribuída não tem a permissão list-extension. Se a reatribuição falhar, use um cofre de backup diferente para configurar o backup.
UserErrorKubernetesBackupExtensionNotFoundError
Causa: o cofre de backup, como parte da validação, verifica se o cluster tem a extensão de Backup instalada. O Cofre 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: usar o cliente do portal do Azure ou CL para excluir a extensão e, em seguida, instalar a extensão novamente.
UserErrorKubernetesBackupExtensionHasErrors
Causa: a extensão de Backup instalada no cluster apresenta alguns erros internos.
Ação recomendada: usar o cliente do portal do Azure ou CL para excluir a extensão e, em seguida, instalar 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, possui uma Identidade de Usuário criada chamada MSI da extensão. Essa MSI foi criada no Grupo de Recursos que compreende os pools de nós do cluster AKS. Essa MSI obtém as funções necessárias atribuídas para acessar o local do Armazenamento de Backup. O código de erro sugere que a Identidade da Extensão está ausente.
Ação recomendada: usar a CLI ou o cliente do portal do Azure para excluir a extensão e, em seguida, instalar a extensão novamente. Uma nova identidade é criada junto com a extensão.
KubernetesBackupCustomResourcesTrackingTimeOutError
Causa: o Backup do Azure para AKS requer que uma extensão de Backup seja instalada no cluster. Para executar as operações de backup e restauração, são criados recursos personalizados no cluster. Os pods de geração de extensão que executam operações relacionadas a backup por meio dessas CRs. Esse erro ocorre quando a extensão não consegue atualizar o status dessas CRs.
Ação recomendada: a integridade da extensão deve ser verificada por meio 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 deverá alterar o estado dos pods para em execução. Se o problema persistir, exclua e reinstale a extensão.
BackupPluginPodRestartedDuringBackupError
Causa: o Pod de Extensão de Backup (dataprotection-microsoft-kubernetes-agent) no cluster do AKS enfrenta instabilidade devido a recursos insuficientes de CPU/Memória em seu nó atual, levando à eliminação de incidentes de OOM (Sem Memória). Isso pode ser devido a computação inferior solicitada pelo pod de extensão de backup.
Ação recomendada: para resolver isso, recomendamos aumentar os valores de computação alocados para esse pod. Ao fazer isso, ele será provisionado automaticamente em um nó diferente no cluster do AKS com recursos de computação amplos disponíveis.
O valor atual da computação para este pod é:
resources.requests.cpu é 500m resources.requests.memory é 128Mi Por gentileza, modifique a alocação de memória para 512Mi atualizando o 'resources.requests.memory'. Se o problema persistir, é aconselhável aumentar o parâmetro 'resources.requests.cpu' para 900m e lançar a alocação de memória. Você pode aumentar os valores para os parâmetros realizando as seguintes etapas:
- Navegue até a folha do cluster do AKS no portal do Azure.
- Clique em "Extensões+Aplicativos" e selecione a extensão "azure-aks-backup".
- Atualize as configurações no portal adicionando o par chave-valor a seguir. resources.requests.cpu 900m resources.requests.memory 512Mi
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 sendo gerados; caso contrário, aumente os nós. Se isso não funcionar, 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 for exibido, tente novamente a operação de backup ou reinstale a extensão.
Erros baseados no local do armazenamento de backup
Esses códigos de erro aparecem devido a problemas baseados na extensão de Backup instalada no cluster do 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 blobs.
Ação recomendada: alterar 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, o que inclui uma conta de armazenamento e um contêiner de blobs. Esse erro será exibido se o local for excluído ou adicionado incorretamente durante a instalação da extensão.
Ação recomendada: excluir a extensão Backup e, em seguida, reinstalá-la com a conta de armazenamento e o contêiner de blobs corretos como entrada.
UserErrorBackupFailedBackupStorageLocationReadOnly
Cause: 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 blobs.
Ação recomendada: alterar 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 blobs. O erro será exibido se o local for excluído ou inserido incorretamente durante a instalação da extensão.
Ação recomendada: excluir a extensão Backup e, em seguida, reinstalá-la com a conta de armazenamento e o contêiner de blobs corretos como entrada.
UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation
Causa: a extensão de Backup deve ter a função Colaborador de Dados do Blob de Armazenamento no local de armazenamento do backup (conta de armazenamento). A Identidade da Extensão recebe a atribuição dessa função.
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, o que inclui uma conta de armazenamento e um contêiner de blobs. A extensão de Backup deve ter a função Colaborador de Dados do Blob de Armazenamento no local de armazenamento do backup (conta de armazenamento). A Identidade da Extensão recebe a atribuição dessa função.
Ação recomendada: o erro aparece se a Identidade de Extensão não tiver as permissões corretas para acessar a conta de armazenamento. Esse erro aparecerá se a extensão de Backup do AKS for instalada pela primeira vez ao configurar a operação de proteção. Isso acontece durante o tempo necessário para que as permissões concedidas sejam propagadas para a extensão de Backup do AKS. Como solução alternativa, aguarde uma hora e repita a configuração da proteção. Caso contrário, use o portal do Azure ou a CLI para reatribuir essa permissão ausente na conta de armazenamento.
UserErrorSnapshotResourceGroupHasLocks
Causa: esse código de erro aparece quando um Bloqueio de Leitura ou Exclusão foi aplicado no Grupo de Recursos de Instantâneo fornecido como entrada para a Extensão de Backup.
Ação recomendada: caso você esteja configurando uma nova instância de backup, use um grupo de recursos sem um bloqueio de leitura ou exclusão. Se a instância de backup já estiver configurada, remova o bloqueio do grupo de recursos de instantâneo.
Erros baseados em backups em cofre
Esses códigos de erro podem aparecer quando você habilita 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 a regra de retenção definida para o armazenamento de dados padrão do cofre para um cofre de backup em uma região em que não há suporte para esse armazenamento de dados.
Ação recomendada: atualizar a regra de retenção com a duração padrão do cofre definida no portal do Azure:
Selecione o ícone Editar ao lado da regra.
Desmarque a caixa de seleção ao lado de Vault-standard e, em seguida, selecione Atualizações.
Crie uma política de backup para o backup da camada operacional (somente instantâneos para o cluster do 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 assinatura, o que interrompe o driver CSI para tirar o instantâneo de volume.
Ação recomendada: remova a política do Azure encerrando assim 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 que um volume persistente pode ter em um determinado momento. Para volumes persistentes baseados em disco do Azure, o limite é 500 instantâneos. Esse erro aparece quando instantâneos de volumes persistentes específicos não são obtidos devido à existência de instantâneos acima dos limites com suporte.
Ação recomendada: atualizar a política de backup para reduzir a duração da retenção e aguarde o cofre de Backup excluir os pontos de recuperação mais antigos.
CSISnapshottingTimedOut
Código de erro: CSISnapshottingTimedOut
Causa: o instantâneo falhou porque o Driver CSI está sendo cronometrado para buscar o identificador de instantâneo.
Ação recomendada: examine os logs e repita a operação para obter instantâneos 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 à execução, juntamente com backups e restaurações, encontraram um erro e não são aplicados com êxito.
Ação recomendada: examine os logs, atualize os ganchos e tente novamente realizar 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 dos quais será feito o backup foram fornecidos corretamente.
UserErrorPVCHasNoVolume
Código de erro: UserErrorPVCHasNoVolume
Causa: a PVC (declaração de volume persistente) no contexto não tem um volume persistente anexado a ela. Portanto, não será feito backup da PVC.
Ação recomendada: anexe um volume ao PVC, se for necessário fazer backup dele.
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. Portanto, não será feito backup da PVC.
Ação recomendada: anexe um volume ao PVC, se for necessário fazer backup dele.
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 anexado.
UserErrorStorageClassMissingForPVC
Código de erro: UserErrorStorageClassMissingForPVC
Causa: o backup do AKS verifica a classe de armazenamento que está sendo usada e faz com que o volume persistente não tire 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 do AKS de origem e o cluster do AKS de destino durante a restauração têm versões diferentes de FlowSchema e CRs de priorityLevelConfigurations. Alguns recursos do Kubernetes não são restaurados devido a essa incompatibilidade de versões de cluster.
Ação recomendada: use para o cluster de destino a mesma versão do cluster de origem ou aplique as CRs manualmente.
LinkedAuthorizationFailed
Código de erro: LinkedAuthorizationFailed
Causa: Para executar uma operação de restauração, o usuário precisa ter permissão de leitura sobre o cluster AKS do qual foi feito backup.
Ação recomendada: atribua a função de Leitor no cluster AKS de origem e prossiga para executar a operação de restauração.