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:
- No portal do Azure, abra o cluster AKS.
- Vá para 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.
- 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.
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
Para verificar Azurepodidentityexceptions no cluster, execute o seguinte comando:
kubectl get Azurepodidentityexceptions --all-namespaces
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.
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
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
Para forçar a recarga
coredns
de pods, execute o seguinte comando:kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
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
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
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.
BackupPluginPodRestartedDuringBackupError
Causa: o pod de extensão de backup (dataprotection-microsoft-kubernetes-agent) em seu cluster AKS experimentando instabilidade devido a recursos insuficientes de CPU/memória em seu nó atual, levando a incidentes de eliminação de OOM (falta de memória). Isso pode ser devido à computação mais baixa solicitada pelo pod de extensão de backup.
Ação recomendada: para resolver isso, recomendamos aumentar os valores de computação alocados para este pod. Ao fazer isso, ele será automaticamente provisionado em um nó diferente dentro do cluster AKS com amplos recursos de computação disponíveis.
O valor atual de computação para este pod é:
resources.requests.cpu é 500m resources.requests.memory é 128Mi Por favor, modifique a alocação de memória para 512Mi atualizando o parâmetro 'resources.requests.memory'. Se o problema persistir, é aconselhável aumentar o parâmetro 'resources.requests.cpu' para 900m, postar a alocação de memória. Você pode aumentar os valores para os parâmetros seguindo as etapas abaixo:
- Navegue até a folha do cluster AKS no portal do Azure.
- Clique em "Extensões+Aplicações" e selecione a extensão "azure-aks-backup".
- Atualize as definições de configuração no portal adicionando o seguinte par chave-valor. 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 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.
UserErrorSnapshotResourceGroupHasLocks
Causa: esse código de erro aparece quando um Bloqueio de Exclusão ou Leitura 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 exclusão ou leitura. Se a instância de backup já estiver configurada, remova o bloqueio do grupo de recursos de snapshot.
Erros baseados em backup em cofre
Esses códigos de erro podem 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:
Selecione o ícone Editar ao lado da regra.
Desmarque a caixa de seleção ao lado do padrão do Vault e selecione Atualizar.
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.
LinkedAuthorizationFailed
Código de erro: LinkedAuthorizationFailed
Causa: Para executar uma operação de restauração, o usuário precisa ter uma permissão de leitura sobre o cluster AKS de 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.