Partager via


Résoudre les problèmes liés aux clusters ou nœuds Azure Kubernetes Service en état d’échec

Cet article explique comment résoudre les problèmes d’un cluster ou d’un nœud AKS (Microsoft Azure Kubernetes Service) qui entre dans un état d’échec.

Causes courantes

Voici les causes courantes d’un cluster ou d’un pool de nœuds ayant échoué :

Cause Référence
Erreur d’approvisionnement d’extension de script personnalisé (CSE) Résoudre les échecs de nœud non prêt causés par des erreurs CSE
Ressources Azure clés indisponibles
Échec d’allocation de machine virtuelle en raison d’une capacité zonale/régionale
Échec d’allocation de machine virtuelle en raison d’un quota de cœurs dépassé Erreur quotaexceeded
Restrictions imposées par le client
Problèmes de charge de travail

Résolution des problèmes de base des erreurs courantes à l’origine de l’échec d’un cluster/nœud

Le tableau suivant présente certaines erreurs courantes qui peuvent entraîner l’échec d’un cluster ou d’un nœud, leurs descriptions et les méthodes de dépannage de base pour résoudre ces erreurs.

Erreur Description Méthode de résolution des problèmes
OutboundConnFailVMExtensionError Cette erreur indique que l’extension de machine virtuelle ne parvient pas à installer ou à mettre à jour en raison d’un manque de connectivité sortante. Vérifiez les règles de groupe de sécurité réseau (NSG) et les paramètres de pare-feu de la machine virtuelle ou du groupe de machines virtuelles identiques. Assurez-vous que la machine virtuelle ou le groupe de machines virtuelles identiques peuvent accéder à ces points de terminaison : https://aka.ms/aks/outbound, , https://aka.ms/aks/sshhttps://aka.ms/aks/agentet https://aka.ms/aks/containerinsights.
Erreur de drainage Cette erreur indique que le nœud ne parvient pas à vider avant l’opération de mise à niveau. Vérifiez l’état et les événements du pod sur le nœud à l’aide des commandes kubectl : kubectl get pods --all-namespaces -o wide et kubectl describe pod <pod-name> -n <namespace>. Recherchez les pods bloqués dans un état arrêté ou inconnu ou avec des erreurs ou des avertissements dans les événements. Vous devrez peut-être forcer la suppression des pods ou redémarrer le service kubelet sur le nœud.
Erreur SubscriptionNotRegistered Cette erreur indique que l’abonnement n’est pas inscrit pour utiliser le fournisseur de ressources AKS. Inscrivez l’abonnement à l’aide de la az provider register --namespace Microsoft.ContainerService commande.
Erreur RequestDisallowedByPolicy Cette erreur indique que l’opération est bloquée par une stratégie appliquée à l’abonnement ou au groupe de ressources. Passez en revue les détails de la stratégie et les étendues d’affectation de stratégie. Pour autoriser l’opération, vous devrez peut-être modifier ou exclure la stratégie.
Erreur QuotaExceededed Cette erreur indique que l’opération dépasse la limite de quota pour un type de ressource ou une région. Vérifiez l’utilisation et la limite de quota actuelles pour le type de ressource ou la région à l’aide de l’Portail Azure, d’Azure CLI ou d’Azure PowerShell. Vous devrez peut-être supprimer certaines ressources inutilisées ou demander une augmentation de quota.
Erreur PublicIPCountLimitReached Cette erreur indique que l’opération atteint le nombre maximal d’adresses IP publiques qui peuvent être créées dans un abonnement ou une région. Vérifiez l’utilisation et la limite actuelles de l’adresse IP publique pour l’abonnement ou la région à l’aide de l’Portail Azure, d’Azure CLI ou d’Azure PowerShell. Vous devrez peut-être supprimer certaines adresses IP publiques inutilisées ou demander une augmentation de la limite d’adresses IP publiques.
Erreur OverconstrainedAllocationRequest Cette erreur indique que l’opération ne parvient pas à allouer la taille de machine virtuelle demandée dans une région. Vérifiez la disponibilité de la taille de machine virtuelle dans la région à l’aide des Portail Azure, d’Azure CLI ou d’Azure PowerShell. Vous devrez peut-être choisir une autre taille de machine virtuelle ou une autre région.
Erreur ReadOnlyDisabledSubscription Cette erreur indique que l’abonnement est actuellement désactivé et défini sur lecture seule. Passez en revue et ajustez les autorisations d’abonnement, car l’abonnement a peut-être été suspendu en raison de problèmes de facturation, de crédits expirés ou de violations de stratégie.

Résolution de base des autres problèmes possibles entraînant l’échec d’un cluster/nœud

Ce tableau décrit d’autres problèmes possibles qui peuvent entraîner l’entrée d’un cluster ou d’un nœud dans un état défaillant, leurs descriptions et solutions pour résoudre ces problèmes.

Problème Description Solution
La taille du sous-réseau est trop petite L’opération ne peut pas créer ou mettre à jour le cluster, car le sous-réseau n’a pas suffisamment d’espace pour prendre en charge le nombre requis de nœuds. Supprimez le pool de nœuds et créez-en un avec une plus grande taille de sous-réseau à l’aide des Portail Azure, d’Azure CLI ou d’Azure PowerShell.
Le réseau virtuel est bloqué L’opération ne peut pas communiquer avec le serveur d’API de cluster ou le plan de contrôle Kubernetes, car le pare-feu ou un paramètre DNS personnalisé bloque les connexions sortantes à partir des nœuds. Autorisez le trafic du nœud sur le pare-feu et configurez la résolution DNS sur Azure à l’aide des Portail Azure, d’Azure CLI ou d’Azure PowerShell.
Problèmes PDB L’opération ne peut pas mettre à jour le cluster, car une base de données PDB a arrêté la suppression d’un ou plusieurs pods. Une base de données PDB est une ressource qui limite le nombre de pods pouvant être arrêtés volontairement pendant une période spécifique. Supprimez temporairement la base de données PDB, rapprochez le cluster, puis ajoutez à nouveau la base de données PDB à l’aide de l’outil en ligne de commande kubectl.
Problèmes d’infrastructure L’opération ne peut pas mettre à jour le cluster en raison d’un problème interne avec le service Azure Resource Manager (ARM) qui gère les ressources dans Azure. Effectuez un rapprochement de pool d’agents pour chaque pool de nœuds et un rapprochement pour le cluster managé à l’aide d’Azure CLI ou d’Azure PowerShell.
Erreurs du serveur d’API L’opération ne peut pas atteindre le serveur d’API de cluster ou le plan de contrôle Kubernetes en raison d’une panne ou d’un bogue. Signalez-le à l’équipe de support AKS et fournissez les journaux et les informations de diagnostic pertinentes. Vous pouvez obtenir les journaux et les informations de diagnostic à l’aide des Portail Azure, d’Azure CLI ou d’Azure PowerShell.

Note

  • L’opération mentionnée dans le tableau précédent fait référence à toute opération de mise à jour (PUT) déclenchée du côté client.
  • Dans Kubernetes, il existe un composant au sein d’un contrôleur. Il garantit l’état réel du monde, y compris l’état du cluster et les états potentiellement externes tels que l’exécution de conteneurs pour Kubelet ou les équilibreurs de charge pour un fournisseur de cloud. Il s’aligne avec l’état souhaité spécifié dans un objet. Ce processus d’alignement est une fonction clé du contrôleur. Pour AKS, ce composant garantit que l’état du cluster AKS s’aligne sur la configuration souhaitée. Pour le déclencher manuellement, exécutez az resource update --ids <AKS cluster id>. Vous pouvez obtenir l’ID de cluster AKS en exécutant az aks show -n <cluster name> -g <cluster resource group> -o json --query id. S’il existe des différences entre les états réels et souhaités, prenez les mesures nécessaires pour corriger ces différences.

Vérification de l’état d’approvisionnement

Pour vérifier l’état du cluster, sélectionnez Provisioning State Check. Ensuite, l’état d’approvisionnement du cluster et du pool d’agents s’affiche.

Capture d’écran montrant l’option « Provisioning State Check ».

Scénario 1 : Le cluster est dans un état d’échec

Pour résoudre ce problème, obtenez l’opération qui provoque l’échec et déterminez l’erreur. Voici deux échecs d’opération courants qui peuvent entraîner un cluster ayant échoué :

  • Échec de création de cluster
  • Échec de la mise à niveau du cluster

Si un cluster récemment créé ou mis à niveau est en état d’échec, utilisez les méthodes suivantes pour résoudre l’échec :

  • Examinez le journal d’activité pour identifier la cause racine de l’échec.

    Vous pouvez afficher le journal d’activité à l’aide des Portail Azure, d’Azure CLI ou d’Azure PowerShell.

    Le journal d’activité peut afficher le code d’erreur et le message associés à l’échec. Pour plus d’informations sur des erreurs spécifiques, consultez la section De base sur la résolution des erreurs courantes entraînant l’échec d’un cluster/nœud.

  • Utilisez la fonctionnalité Diagnostic et résolution des problèmes AKS pour résoudre et résoudre les problèmes courants.

    Note

    Cette fonctionnalité est disponible uniquement dans les Portail Azure et Azure CLI.

Afficher le journal d’activité d’un cluster ayant échoué à l’aide du Portail Azure

Pour afficher les journaux d’activité d’un cluster ayant échoué à partir de l’Portail Azure, procédez comme suit :

  1. Dans le Portail Azure, accédez à la page Groupes de ressources et sélectionnez le groupe de ressources qui contient votre cluster.

  2. Dans la page Vue d’ensemble, sélectionnez le nom du cluster dans la liste des ressources.

  3. Dans la page du cluster, sélectionnez Journal d’activité dans le menu de gauche.

  4. Dans la page du journal d’activité, vous pouvez filtrer les événements par état, timespan, événement initié par et catégorie d’événement. Par exemple, vous pouvez sélectionner Échec dans la liste déroulante État pour afficher uniquement les événements ayant échoué.

    Capture d’écran montrant comment filtrer les événements sur la page « Journal d’activité ».

  5. Pour vérifier les détails d’un événement, sélectionnez le nom de l’événement dans la liste. Un nouveau volet s’ouvre avec le résumé des événements, les propriétés et les données JSON. Vous pouvez également télécharger les données JSON en tant que fichier.

  6. Pour vérifier le code d’erreur et le message associé à l’événement, faites défiler jusqu’à la section État dans le résumé de l’événement. Vous trouverez également les informations d’erreur dans les propriétés et les sections de données JSON.

Afficher le journal d’activité d’un cluster ayant échoué à l’aide d’Azure CLI

Si vous préférez utiliser Azure CLI pour afficher le journal d’activité d’un cluster ayant échoué, procédez comme suit :

  1. Installez Azure CLI sur votre ordinateur et connectez-vous avec votre compte Azure.

  2. Répertoriez les groupes de ressources dans votre abonnement à l’aide de la az group list commande et recherchez le nom du groupe de ressources qui contient votre cluster.

  3. Répertoriez les ressources du groupe de ressources à l’aide de la az resource list commande avec le --resource-group paramètre et recherchez le nom du cluster.

  4. Répertoriez le journal d’activité du cluster à l’aide de la az monitor activity-log list commande avec les paramètres et --resource les --resource-group paramètres. Vous pouvez également utiliser les paramètres , , --caller--start-time--end-timeet --filter les --statusparamètres pour filtrer les événements selon différents critères. Par exemple, vous pouvez utiliser --status Failed pour afficher uniquement les événements ayant échoué.

  5. Affichez les détails d’un événement spécifique à l’aide de la az monitor activity-log show commande avec les paramètres et --event-id les --resource-group--resourceparamètres. Vous trouverez l’ID d’événement à partir de la sortie de la commande précédente. La sortie inclut le résumé des événements, les propriétés et les données JSON. Vous pouvez également utiliser le --output paramètre pour modifier le format de sortie.

  6. Pour afficher le code d’erreur et le message associés à l’événement, recherchez le statusMessage champ dans la sortie de commande. Vous trouverez également les informations d’erreur dans les propriétés et les sections de données JSON.

    Capture d’écran montrant les données JSON.

Utiliser la fonctionnalité Diagnostic et résolution des problèmes AKS pour un cluster ayant échoué

Dans le Portail Azure, accédez à votre ressource de cluster AKS, puis sélectionnez Diagnostiquer et résoudre les problèmes dans le menu de gauche. Vous verrez une liste de catégories et de scénarios que vous pouvez sélectionner pour exécuter des vérifications de diagnostic et obtenir des solutions recommandées.

Dans Azure CLI, utilisez la az aks collect commande avec les paramètres et --resource-group les --name paramètres pour collecter des données de diagnostic à partir de vos nœuds de cluster. Vous pouvez également utiliser les paramètres et --sas-token les --storage-account paramètres pour spécifier un compte Stockage Azure où les données seront chargées. La sortie inclut un lien vers le panneau Diagnostiquer et résoudre les problèmes dans lequel vous pouvez afficher les résultats et les actions suggérées.

Dans le panneau Diagnostiquer et résoudre les problèmes , vous pouvez sélectionner Problèmes de cluster comme catégorie. Si des problèmes sont détectés, vous verrez une liste des solutions possibles que vous pouvez suivre pour les résoudre.

Capture d’écran montrant les solutions possibles dans le portail « Diagnostiquer et résoudre les problèmes ».

Scénario 2 : Le nœud est dans un état d’échec

Dans de rares cas, une opération de détachement de disque Azure peut échouer partiellement, ce qui laisse la machine virtuelle du nœud dans un état d’échec.

Pour résoudre ce problème, mettez à jour manuellement l’état de la machine virtuelle à l’aide de l’une des méthodes suivantes :

  • Pour un cluster basé sur un groupe à haute disponibilité, exécutez la commande az vm update suivante :

    az vm update --resource-group <resource-group-name> --name <vm-name>
    
  • Pour un cluster basé sur un groupe de machines virtuelles identiques, exécutez la commande az vmss update-instances suivante :

    az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
    

Scénario 3 : Le pool de nœuds est dans un état d’échec

Ce problème peut se produire lorsque le groupe de machines virtuelles identiques ou le groupe à haute disponibilité qui sauvegarde le pool de nœuds rencontre une erreur lors de l’approvisionnement, de la mise à l’échelle ou de la mise à jour. Ce problème peut être dû à une capacité insuffisante, à des limites de quota, à des problèmes réseau, à des violations de stratégie, à des verrous de ressources ou à d’autres facteurs qui empêchent l’allocation ou la configuration correcte de la machine virtuelle.

Pour résoudre le problème, procédez comme suit :

  1. Vérifiez l’état du pod à l’aide de la commande az aks nodepool show. Si l’état d’approvisionnement est Failed, vous pouvez voir le message d’erreur et le code dans la sortie.
  2. Vérifiez l’état du groupe de machines virtuelles identiques ou du groupe à haute disponibilité à l’aide de la ou az vm availability-set show de la az vmss show commande. Si l’état d’approvisionnement est Failed, vous pouvez voir le message d’erreur et le code dans la sortie.
  3. Vérifiez l’état de la machine virtuelle individuelle dans le pool de nœuds à l’aide de la ou az vm list de la az vmss list-instances commande. Si une machine virtuelle est dans un Failed état ou Unhealthy un état, vous pouvez voir le message d’erreur et le code dans la sortie.
  4. Vérifiez le journal d’activité et le paramètre de diagnostic du groupe de machines virtuelles identiques ou du groupe à haute disponibilité pour voir si des événements ou des alertes indiquent la cause de l’échec. Vous pouvez utiliser l’API Portail Azure, Azure CLI ou Azure Monitor pour accéder au journal d’activité et au paramètre de diagnostic.
  5. Vérifiez le quota et la capacité de la région et de l’abonnement où le pool de nœuds est déployé. Vous pouvez utiliser la commande ou l’Portail Azure az vm list-usage pour vérifier le quota et la capacité. Si le quota ou la limite de capacité est atteint, vous pouvez demander une augmentation ou supprimer certaines ressources inutilisées.
  6. Vérifiez les attributions de stratégie et de rôle du pool de nœuds. Vous pouvez utiliser les commandes et az role les az policy Portail Azure pour vérifier les définitions de stratégie, les affectations, la conformité et les exemptions. Vous pouvez également vérifier les attributions de rôles et les autorisations du pool de nœuds à l’aide de la az role assignment commande ou de la Portail Azure.
  7. Vérifiez les verrous de ressources du pool de nœuds. Vous pouvez utiliser la az lock commande ou le Portail Azure pour vérifier le niveau de verrouillage, l’étendue et les notes. Vous pouvez également supprimer ou mettre à jour le verrou si nécessaire.

Autres outils de journalisation et de diagnostic

Si les méthodes de dépannage précédentes ne résolvent pas votre problème, vous pouvez utiliser les outils de journalisation et de diagnostic suivants pour collecter plus d’informations et identifier la cause racine :

  • Azure Monitor pour conteneurs :

    Ce service collecte et analyse les métriques et les journaux à partir de clusters AKS et des nœuds. Azure Monitor pour conteneurs peut surveiller l’intégrité, les performances et la disponibilité des clusters et des nœuds. Vous pouvez également l’utiliser pour afficher les journaux de conteneur, les journaux kubelet et les journaux de diagnostic de démarrage de nœud.

  • PÉRISCOPE AKS

    Cet outil collecte les journaux de nœud et de pod, les informations réseau et la configuration du cluster à partir d’un cluster AKS et les charge dans un compte de stockage Azure. Cet outil peut vous aider à résoudre les problèmes courants de cluster, tels que la résolution DNS, la connectivité réseau et l’état du nœud. Vous pouvez également l’utiliser pour générer une demande de support avec les journaux collectés attachés.

  • Diagnostics AKS

    Cet outil exécute une série de vérifications sur les clusters AKS et les nœuds et fournit des recommandations et des étapes de correction pour les problèmes courants. Cet outil peut vous aider à résoudre les problèmes liés à la création, à la mise à niveau, à la mise à l’échelle, à la mise à l’échelle, à la mise en réseau, au stockage et à la sécurité. Vous pouvez également l’utiliser pour générer une demande de support avec les résultats de diagnostic joints.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.