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/agent et 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écutantaz 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.
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 :
Examinez le journal d’activité pour identifier la cause racine de l’échec.
Vous pouvez afficher le journal d’activité à l’aide du Portail Azure, d’Azure CLI ou de Azure PowerShell.
Le journal d’activité peut vous afficher le code d’erreur et le message associés à l’échec. Pour plus d’informations sur des erreurs spécifiques, consultez la section Résolution de base des erreurs courantes à l’origine de l’échec d’un cluster/nœud .
Utilisez la fonctionnalité Diagnostiquer et résoudre les problèmes d’AKS pour résoudre les problèmes courants.
Remarque
Cette fonctionnalité est disponible uniquement dans le 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 du Portail Azure, procédez comme suit :
Dans la Portail Azure, accédez à la page Groupes de ressources et sélectionnez le groupe de ressources qui contient votre cluster.
Dans la page Vue d’ensemble , sélectionnez le nom du cluster dans la liste des ressources.
Dans la page du cluster, sélectionnez Journal d’activité dans le menu de gauche.
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é.
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.
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 :
Installez Azure CLI sur votre ordinateur et connectez-vous avec votre compte Azure.
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.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.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--status
paramè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é.Affichez les détails d’un événement spécifique à l’aide de la
az monitor activity-log show
commande avec les--resource-group
paramètres ,--resource
et--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.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.
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.
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 :
- Vérifiez la status du pool de nœuds à l’aide de la
az aks nodepool show
commande . Si l’état d’approvisionnement estFailed
, vous pouvez voir le message d’erreur et le code dans la sortie. - Vérifiez les status du groupe de machines virtuelles identiques ou du groupe à haute disponibilité à l’aide de la
az vmss show
commande ouaz vm availability-set show
. Si l’état d’approvisionnement estFailed
, vous pouvez voir le message d’erreur et le code dans la sortie. - Vérifiez la status de la machine virtuelle individuelle dans le pool de nœuds à l’aide de la
az vmss list-instances
commande ouaz vm list
. Si une machine virtuelle est dans unFailed
état ouUnhealthy
, vous pouvez voir le message d’erreur et le code dans la sortie. - 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.
- 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. - Vérifiez les attributions de stratégie et de rôle du pool de nœuds. Vous pouvez utiliser les
az policy
commandes etaz 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 laaz role assignment
commande ou de la Portail Azure. - 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.
-
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.