Résoudre les problèmes de sauvegarde et de restauration d’Azure Kubernetes Service

Cet article vous fournit des étapes de résolution des erreurs de sauvegarde, de restauration et de gestion Azure Kubernetes Service (AKS).

Résolution des erreurs d’installation de l’extension de Sauvegarde AKS

Scénario 1

Message d’erreur :

{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"`

Cause : L’extension est installée correctement, mais les pods ne sont pas générés, car le calcul et la mémoire requis ne sont pas disponibles pour les pods.

Résolution : Pour résoudre le problème, augmentez le nombre de nœuds dans le cluster, ce qui permet de disposer d’un calcul et d’une mémoire suffisants pour que les pods puissent générer. Procédez comme suit pour mettre à l’échelle le pool de nœuds sur le Portail Azure :

  1. Dans le Portail Azure, ouvrez le cluster AKS.
  2. Accédez à Pools de nœuds sous Paramètres.
  3. Sélectionnez Mettre à l’échelle le pool de nœuds, puis mettez à jour les valeurs minimales et maximales dans la plage de nombre de nœuds.
  4. Sélectionnez Appliquer.

Scénario 2

Message d’erreur :

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-

Cause : Lorsque vous activez l’identité managée par pod sur votre cluster AKS, une AzurePodIdentityException nommée aks-addon-exception est ajoutée à l’espace de noms kube-system. Une AzurePodIdentityException permet aux pods avec certaines étiquettes d’accéder au point de terminaison Azure Instance Metadata Service (IMDS) sans être interceptés par le serveur NMI.

Les pods d’extension ne sont pas exemptés et nécessitent l’activation manuelle de l’identité de pod Microsoft Entra.

Résolution : Créez une exception d’identité de pod dans le cluster AKS (qui fonctionne uniquement pour l’espace de noms dataprotection-microsoft et non pour kube-system). Plus d’informations

  1. Exécutez la commande suivante :

    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. Pour vérifier azurepodidentityexceptions dans le cluster, exécutez la commande suivante :

    kubectl get Azurepodidentityexceptions --all-namespaces
    
  3. Pour affecter le rôle Contributeur aux données blob de stockage à l’identité d’extension, exécutez la commande suivante :

    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
    

Scénario 3

Message d’erreur :

{"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"}`

Cause : Des règles spécifiques de nom de domaine complet/d’application sont requises pour utiliser des extensions de cluster dans les clusters AKS. Plus d’informations

Cette erreur s’affiche en l’absence de ces règles de nom de domaine complet qui est responsable de l’indisponibilité des informations de configuration du service Extensions de cluster.

Résolution : Pour résoudre le problème, vous devez créer un remplacement CoreDNS-custom pour le passage par le réseau public du point de terminaison DP.

  1. Obtenez un YAML personnalisé CoreDNS existant dans votre cluster (enregistrez-le sur votre local pour référence ultérieure) :

    kubectl get configmap coredns-custom -n kube-system -o yaml
    
  2. Remplacez le mappage pour le point de terminaison DP central vers l’adresse IP publique (utilisez le code YAML ci-dessous) :

    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
               }
    

    Exécutez maintenant la commande ci-dessous pour appliquer le fichier yaml de mise à jour :

    kubectl apply -f corednsms.yaml
    
  3. Pour forcer les pods coredns à recharger, exécutez la commande suivante :

    kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
    
  4. Pour effectuer NSlookup depuis le pod ExtensionAgent afin de vérifier si coreDNS-custom fonctionne, exécutez la commande suivante :

    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. Pour consulter les journaux du pod ExtensionAgent, exécutez la commande suivante :

    kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
    
  6. Supprimez et réinstallez l’extension de sauvegarde pour démarrer la sauvegarde.

Erreurs liées à l’extension de sauvegarde après l’installation

Ces codes d’erreur s’affichent en raison de problèmes affectant l’extension de sauvegarde installée dans le cluster AKS.

KubernetesBackupListExtensionsError :

Cause : dans le cadre d’une validation, le coffre de sauvegarde vérifie si l’extension de sauvegarde est installée sur le cluster. Pour cela, l’identité MSI du coffre a besoin d’une autorisation de lecteur sur le cluster AKS pour répertorier toutes les extensions installées dans le cluster.

Action recommandée : réattribuez le rôle de lecteur à l’identité MSI du coffre (supprimez l’attribution de rôle existante et réattribuez le rôle de lecteur), car le rôle de lecteur attribué ne dispose pas de l’autorisation list-extension. Si la réattribution échoue, utilisez un autre coffre de sauvegarde pour configurer la sauvegarde.

UserErrorKubernetesBackupExtensionNotFoundError

Cause : dans le cadre d’une validation, le coffre de sauvegarde vérifie si l’extension de sauvegarde est installée sur le cluster. Le coffre effectue une opération pour répertorier les extensions installées dans le cluster. Si l’extension de sauvegarde ne figure pas dans la liste, cette erreur s’affiche.

Action recommandée : utilisez l’interface CLI ou le client Portail Azure pour supprimer l’extension, puis réinstallez-la.

UserErrorKubernetesBackupExtensionHasErrors

Cause : l’extension de sauvegarde installée dans le cluster comporte des erreurs internes.

Action recommandée : utilisez l’interface CLI ou le client Portail Azure pour supprimer l’extension, puis réinstallez-la.

UserErrorKubernetesBackupExtensionIdentityNotFound

Cause : la sauvegarde AKS nécessite l’installation d’une extension de sauvegarde dans le cluster. Une identité d’utilisateur, appelée MSI d’extension, est créée pour l’extension et son installation. Ce MSI est créé dans le Groupe de ressources comprenant les pools de nœuds pour le cluster AKS. Cette identité MSI obtient les rôles requis attribués pour accéder à l’emplacement du stockage de sauvegarde. Le code d’erreur suggère que l’identité d’extension est manquante.

Action recommandée : utilisez l’interface CLI ou le client Portail Azure pour supprimer l’extension, puis réinstallez-la. Une identité est créée en même temps que l’extension.

KubernetesBackupCustomResourcesTrackingTimeOutError

Cause : Sauvegarde Azure pour AKS nécessite l’installation d’une extension de sauvegarde dans le cluster. Pour effectuer des opérations de sauvegarde et de restauration, des ressources personnalisées sont créées dans le cluster. Les pods générés par l’extension effectuent les opérations liées à la sauvegarde via ces ressources personnalisées. Cette erreur se produit lorsque l’extension ne peut pas mettre à jour l’état de ces ressources personnalisées.

Action recommandée : vous devez vérifier l’intégrité de l’extension en exécutant la commande kubectl get pods -n dataprotection.microsoft. Si les pods ne sont pas à l’état « en cours d’exécution », augmentez le nombre de nœuds dans le cluster de 1 ou augmentez les limites de calcul. Attendez ensuite quelques minutes et réexécutez la commande, ce qui devrait faire passer les pods à l’état « en cours d’exécution ». Si le problème persiste, supprimez et réinstallez l’extension.

BackupPluginPodRestartedDuringBackupError

Cause : pod d’extension de sauvegarde (dataprotection-microsoft-kubernetes-agent) dans votre cluster AKS qui rencontre une instabilité en raison d’une insuffisance de ressources processeur/mémoire sur son nœud actuel, ce qui entraîne l’arrêt des incidents OOM (mémoire insuffisante). Cela peut être dû à un calcul inférieur demandé par le pod d’extension de sauvegarde.

Action recommandée : pour résoudre ce problème, nous vous recommandons d’augmenter les valeurs de calcul allouées à ce pod. En procédant ainsi, il sera automatiquement approvisionné sur un autre nœud au sein de votre cluster AKS avec de nombreuses ressources de calcul disponibles.

La valeur actuelle du calcul pour ce pod est la suivante :

resources.requests.cpu est de 500m resources.requests.memory est 128Mi Kindly modifier l’allocation de mémoire sur 512Mi en mettant à jour le paramètre « resources.requests.memory ». Si le problème persiste, il est conseillé d’augmenter le paramètre « resources.requests.cpu » à 900m, après l’allocation de mémoire. Vous pouvez augmenter les valeurs des paramètres en procédant comme suit :

  1. Naviguez jusqu’à la lame du cluster AKS dans le portail Azure.
  2. Cliquez sur « Extensions +Applications », puis sélectionnez l’extension « azure-aks-backup ».
  3. Mettez à jour les paramètres de configuration dans le portail en ajoutant la paire clé-valeur suivante. resources.requests.cpu 900m resources.requests.memory 512Mi

BackupPluginDeleteBackupOperationFailed

Cause : l’extension de sauvegarde doit être en cours d’exécution pour supprimer les sauvegardes.

Action recommandée : si le cluster est en cours d’exécution, vérifiez que l’extension s’exécute dans un état sain. Vérifiez si les pods de l’extension sont en cours de génération ; sinon, augmentez les nœuds. En cas d’échec, essayez de supprimer et de réinstaller l’extension. Si le cluster sauvegardé est supprimé, supprimez manuellement les instantanés et les métadonnées.

ExtensionTimedOutWaitingForBackupItemSync

Cause : l’extension sauvegarde attend que les éléments de sauvegarde soient synchronisés avec le compte de stockage.

Action recommandée : si ce code d’erreur s’affiche, réessayez l’opération de sauvegarde ou réinstallez l’extension.

Erreurs basées sur l’emplacement de stockage de sauvegarde

Ces codes d’erreur s’affichent en raison de problèmes basés sur l’extension de sauvegarde installée dans le cluster AKS.

UserErrorDeleteBackupFailedBackupStorageLocationReadOnly

Cause : le compte de stockage fourni en entrée pendant l’installation de l’extension de sauvegarde est en lecture seule, ce qui ne permet pas de supprimer les données de sauvegarde du conteneur d’objets blob.

Action recommandée : faites passer l’état du compte de stockage de lecture seule à écriture.

UserErrorDeleteBackupFailedBackupStorageLocationNotFound

Cause : pendant l’installation de l’extension, vous devez fournir en entrée un emplacement de stockage de sauvegarde comprenant un compte de stockage et un conteneur d’objets blob. Cette erreur s’affiche si l’emplacement est supprimé ou ajouté de manière incorrecte pendant l’installation de l’extension.

Action recommandée : supprimez l’extension de sauvegarde, puis réinstallez-la avec le compte de stockage et le conteneur d’objets blob appropriés en entrée.

UserErrorBackupFailedBackupStorageLocationReadOnly

Cause : le compte de stockage fourni en entrée pendant l’installation de l’extension de sauvegarde est en lecture seule, ce qui ne permet pas d’écrire les données de sauvegarde sur le conteneur d’objets blob.

Action recommandée : faites passer l’état du compte de stockage de lecture seule à écriture.

UserErrorNoDefaultBackupStorageLocationFound

Cause : pendant l’installation de l’extension, vous devez fournir en entrée un emplacement de stockage de sauvegarde comprenant un compte de stockage et un conteneur d’objets blob. L’erreur s’affiche si l’emplacement est supprimé ou entré de manière incorrecte pendant l’installation de l’extension.

Action recommandée : supprimez l’extension de sauvegarde, puis réinstallez-la avec le compte de stockage et le conteneur d’objets blob appropriés en entrée.

UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation

Cause: L’extension de sauvegarde doit disposer du rôle Contributeur aux données Blob de stockage sur l’emplacement de stockage de sauvegarde (compte de stockage). L’identité de l’extension se voit attribuer ce rôle.

Action recommandée : si ce rôle est manquant, utilisez le portail Azure ou l’interface CLI pour réaffecter cette autorisation manquante au compte de stockage.

UserErrorBackupStorageLocationNotReady

Cause : pendant l’installation de l’extension, vous devez fournir en entrée un emplacement de stockage de sauvegarde comprenant un compte de stockage et un conteneur d’objets blob. L’extension de sauvegarde doit disposer du rôle Contributeur aux données Blob de stockage sur l’emplacement de stockage de sauvegarde (compte de stockage). L’identité de l’extension se voit attribuer ce rôle.

Action recommandée : l’erreur s’affiche si l’identité de l’extension ne dispose pas des autorisations nécessaires pour accéder au compte de stockage. Cette erreur s’affiche si l’extension de sauvegarde AKS est installée pour la première fois lors de la configuration de l’opération de protection. Cela se produit pendant que les autorisations accordées se propagent à l’extension de sauvegarde AKS. Pour contourner ce problème, attendez une heure et réessayez la configuration de protection. Sinon, utilisez le portail Azure ou l’interface CLI pour réaffecter cette autorisation manquante au compte de stockage.

UserErrorSnapshotResourceGroupHasLocks

Cause : Ce code d’erreur s’affiche lorsqu’un verrou de suppression ou de lecture a été appliqué sur le groupe de ressources d’instantané fourni comme entrée pour l’extension Sauvegarde.

Action recommandée : si vous configurez une nouvelle instance de sauvegarde, utilisez un groupe de ressources sans verrou de suppression ou de lecture. Si l’instance de sauvegarde est déjà configurée, supprimez le verrou du groupe de ressources d’instantané.

Erreurs basées sur la sauvegarde archivée

Ces codes d’erreur peut s’afficher si vous autorisez la sauvegarde AKS à stocker les sauvegardes dans un magasin de données Coffre standard.

DppUserErrorVaultTierPolicyNotSupported

Cause : ce code d’erreur s’affiche quand une stratégie de sauvegarde est créée avec une règle de rétention définie pour le magasin de données Coffre standard pour un coffre de sauvegarde dans une région où ce magasin de données n’est pas pris en charge.

Action recommandée : mettez à jour la règle de rétention avec la durée du Coffre standard définie dans le portail Azure :

  1. Sélectionnez l’icône Modifier en regard de la règle.

    Capture d’écran montrant comment modifier la durée de rétention des sauvegardes AKS.

  2. Décochez la case en regard de Coffre standard, puis sélectionnez Mettre à jour.

    Capture d’écran montrant l’effacement de la case à cocher standard du coffre.

  3. Créez une stratégie de sauvegarde pour la sauvegarde de niveau opérationnel (uniquement des instantanés pour le cluster AKS).

Travaux de sauvegarde et de restauration AKS terminés avec des avertissements

UserErrorPVSnapshotDisallowedByPolicy

Code d’erreur : UserErrorPVSnapshotDisallowedByPolicy

Cause : une stratégie Azure est affectée sur l’abonnement et empêche le pilote CSI de capturer l’instantané du volume.

Action recommandée : supprimez la stratégie Azure qui empêche l’opération d’instantané de disque, puis effectuez une sauvegarde à la demande.

UserErrorPVSnapshotLimitReached

Code d’erreur : UserErrorPVSnapshotLimitReached

Cause : seul un nombre limité d’instantanés pour un volume persistant peut exister à un moment donné. Pour les volumes persistants basés sur disque Azure, la limite est de 500 instantanés. Cette erreur s’affiche lorsque les instantanés pour des volumes persistants spécifiques ne sont pas capturés parce qu’il existe plus d’instantanés que les limites prises en charge.

Action recommandée : mettez à jour la stratégie de sauvegarde pour réduire la durée de rétention et attendez que les points de récupération plus anciens soient supprimés par le coffre de sauvegarde.

CSISnapshottingTimedOut

Code d’erreur : CSISnapshottingTimedOut

Cause : impossible de capturer l’instantané, car le pilote CSI expire lors de la récupération (fetch) du descripteur d’instantanés.

Action recommandée : passez en revue les journaux et réessayez l’opération pour obtenir des instantanés réussis en exécutant une sauvegarde à la demande ou attendez la prochaine sauvegarde planifiée.

UserErrorHookExecutionFailed

Code d’erreur : UserErrorHookExecutionFailed

Cause : lorsque des hooks appliqués pour une exécution avec des opérations de sauvegarde et de restauration ont rencontré une erreur et ne sont pas correctement appliqués.

Action recommandée : passez en revue les journaux, mettez à jour les hooks, puis réessayez l’opération de sauvegarde/restauration.

UserErrorNamespaceNotFound

Code d’erreur : UserErrorNamespaceNotFound

Cause : les espaces de noms renseignés dans la configuration de la sauvegarde sont manquants lors de l’exécution de sauvegardes. L’espace de noms n’a pas bien été renseigné ou a été supprimé.

Action recommandée : vérifiez si les espaces de noms à sauvegarder sont correctement renseignés.

UserErrorPVCHasNoVolume

Code d’erreur : UserErrorPVCHasNoVolume

Cause : aucun volume persistant n’est attaché à la revendication de volume persistant (PVC) dans le contexte. Donc, le PVC ne sera pas sauvegardé.

Action recommandée : si la PVC doit être sauvegardée, attachez-y un volume.

UserErrorPVCNotBoundToVolume

Code d’erreur : UserErrorPVCNotBoundToVolume

Cause : la PVC dans le contexte est dans l’état En attente et aucun volume persistant n’y est attaché. Donc, le PVC ne sera pas sauvegardé.

Action recommandée : si la PVC doit être sauvegardée, attachez-y un volume.

UserErrorPVNotFound

Code d’erreur : UserErrorPVNotFound

Cause : le support de stockage sous-jacent pour le volume persistant est manquant.

Action recommandée : vérifiez et attachez un nouveau volume persistant avec un support de stockage attaché.

UserErrorStorageClassMissingForPVC

Code d’erreur : UserErrorStorageClassMissingForPVC

Cause : la sauvegarde AKS vérifie l’utilisation de la classe de stockage et ignore le volume persistant de la capture d’instantanés, car la classe est indisponible.

Action recommandée : mettez à jour les spécifications de la PVC avec la classe de stockage utilisée.

UserErrorSourceandTargetClusterCRDVersionMismatch

Code d’erreur : UserErrorSourceandTargetClusterCRDVersionMismatch

Cause : pendant la restauration, le cluster AKS source et le cluster AKS cible ont différentes versions de FlowSchema et des demandes de modification PriorityLevelConfigurations. Certaines ressources Kubernetes ne sont pas restaurées, car les versions de cluster ne sont pas compatibles.

Action recommandée : utilisez la même version de cluster pour le cluster cible que le cluster source ou appliquez manuellement les demandes de modification.

LinkedAuthorizationFailed

Code d’erreur : LinkedAuthorizationFailed

Cause : Pour effectuer une opération de restauration, l’utilisateur doit disposer d’une autorisation de lecture sur le cluster AKS sauvegardé.

Action recommandée : Attribuez le rôle Lecteur sur le cluster AKS source, puis procédez à l’opération de restauration.

Étapes suivantes