Partager via


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

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

Causes courantes

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

Cause Référence
Erreur de provisionnement de l’extension de machine virtuelle (VM) de l’extension CSE (Custom Script Extension) Résoudre les défaillances de nœud non prêtes provoquées par des erreurs CSE
Ressources Azure clés non disponibles
Échec d’allocation de machine virtuelle en raison de l’absence de capacité zonale/régionale
Échec d’allocation de machine virtuelle en raison d’un quota de cœurs dépassé Erreur quotaexceededed
Restrictions imposées par le client
Problèmes de charge de travail

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

Le tableau suivant présente certaines erreurs courantes qui peuvent entraîner l’entrée d’un cluster ou d’un nœud dans un état d’échec, 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’installation ou la mise à jour de l’extension de machine virtuelle échoue 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 peut accéder aux points de terminaison suivants : https://aka.ms/aks/outbound, https://aka.ms/aks/ssh, https://aka.ms/aks/agentet https://aka.ms/aks/containerinsights.
Erreur de drainage Cette erreur indique que le nœud ne parvient pas à s’écouler avant l’opération de mise à niveau. Vérifiez les status 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 terminé 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’attribution de stratégie. Pour autoriser l’opération, vous devrez peut-être modifier ou exclure la stratégie.
Erreur QuotaExceeded 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 actuelle du quota et la limite de quota 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 d’adresses IP publiques actuelles pour l’abonnement ou la région à l’aide de l’Portail Azure, d’Azure CLI ou de 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 de l’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. Examinez et ajustez les autorisations de l’abonnement, car l’abonnement peut avoir été suspendu en raison de problèmes de facturation, de crédit expiré ou de violations de stratégie.

Résolution de base des autres problèmes pouvant entraîner 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’échec, leurs descriptions et leurs 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 accueillir 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 de la Portail Azure, d’Azure CLI ou de 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 (Domain Name System) 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 du Portail Azure, d’Azure CLI ou de Azure PowerShell.
Problèmes PDB L’opération ne peut pas mettre à jour le cluster, car une PDB a arrêté la suppression d’un ou plusieurs pods. Une PDB est une ressource qui limite le nombre de pods pouvant être volontairement arrêtés pendant une période spécifique. Supprimez temporairement la base de données PDB, rapprochez le cluster, puis ajoutez à nouveau le 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 de 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 d’activité et les informations de diagnostic appropriés. Vous pouvez obtenir les journaux et les informations de diagnostic à l’aide du Portail Azure, d’Azure CLI ou de Azure PowerShell.

Remarque

  • 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 dans 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 d’équilibreurs de charge pour un fournisseur de cloud. Il s’aligne sur 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 case activée le status du cluster, sélectionnez Vérification de l’état d’approvisionnement. Ensuite, l’état d’approvisionnement du cluster et du pool d’agents s’affiche.

Capture d’écran montrant l’option « Vérification de l’état d’approvisionnement ».

Scénario 1 : Le cluster est en é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 l’échec d’un cluster :

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

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

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 du Portail Azure, procédez comme suit :

  1. Dans la 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 Journal d’activité , vous pouvez filtrer les événements par État, Intervalle de temps, Événement initié par et Catégorie d’événement. Par exemple, vous pouvez sélectionner Échec dans la liste déroulante État pour voir uniquement les événements ayant échoué.

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

  5. Pour case activée 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é de l’événement, les propriétés et les données JSON. Vous pouvez également télécharger les données JSON sous forme de fichier.

  6. Pour case activée le code d’erreur et le message associés à 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 sections propriétés et 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 défaillant, 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 --resource-group paramètres et --resource . Vous pouvez également utiliser les --statusparamètres , --start-time, --caller--end-time, et --filter pour filtrer les événements selon différents critères. Par exemple, vous pouvez utiliser --status Failed pour voir 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 --resource-groupparamètres , --resourceet --event-id . Vous trouverez l’ID d’événement à partir de la sortie de la commande précédente. La sortie inclut le résumé de l’événement, 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 la commande. Vous trouverez également les informations d’erreur dans les sections propriétés et données JSON.

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

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

Dans le Portail Azure, accédez à votre ressource de cluster AKS et 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 --name paramètres et --resource-group pour collecter des données de diagnostic à partir de vos nœuds de cluster. Vous pouvez également utiliser les --storage-account paramètres et --sas-token pour spécifier un compte de stockage Azure dans lequel 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 de 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 partiellement échouer, ce qui laisse la machine virtuelle du nœud dans un état d’échec.

Pour résoudre ce problème, mettez à jour manuellement la machine virtuelle status à 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 ce problème, procédez comme suit :

  1. Vérifiez la status du pool de nœuds à l’aide de la az aks nodepool show commande . Si l’état d’approvisionnement est Failed, vous pouvez voir le message d’erreur et le code dans la sortie.
  2. Vérifiez les status du groupe de machines virtuelles identiques ou du groupe à haute disponibilité à l’aide de la az vmss show commande ou az vm availability-set show . Si l’état d’approvisionnement est Failed, vous pouvez voir le message d’erreur et le code dans la sortie.
  3. Vérifiez la status de la machine virtuelle individuelle dans le pool de nœuds à l’aide de la az vmss list-instances commande ou az vm list . Si une machine virtuelle est dans un Failed état ou Unhealthy , 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 le Portail Azure, Azure CLI ou l’API 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 az vm list-usage commande ou le Portail Azure pour case activée le quota et la capacité. Si la limite de quota ou de capacité est atteinte, vous pouvez demander une augmentation ou supprimer des ressources inutilisées.
  6. Vérifiez les attributions de stratégie et de rôle du pool de nœuds. Vous pouvez utiliser les az policy commandes et az role ou les Portail Azure pour case activée les définitions de stratégie, les affectations, la conformité et les exemptions. Vous pouvez également case activée 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 case activée 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 résolution des problèmes 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 des 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 des nœuds.

  • AKS Periscope

    Cet outil collecte les journaux d’activité des nœuds et des pods, 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 le status de nœud. Vous pouvez également l’utiliser pour générer une demande de support avec les journaux collectés joints.

  • AKS Diagnostics

    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 en réseau, le stockage et la sécurité du cluster. 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.