Résolution des problèmes de base liés à la création d’un cluster AKS

Cet article décrit les méthodes de résolution des problèmes de base à utiliser si vous ne pouvez pas créer ou déployer un cluster Microsoft Azure Kubernetes Service (AKS) correctement.

Conditions préalables

Afficher les erreurs à partir d’Azure CLI

Lorsque vous créez des clusters à l’aide d’Azure CLI, les erreurs sont enregistrées en tant que sortie en cas d’échec de l’opération. Voici comment une commande, une entrée utilisateur et une sortie d’opération peuvent apparaître dans une console Bash :

$ az aks create --resource-group myResourceGroup \
> --name MyManagedCluster \
> --load-balancer-sku standard \
> --vnet-subnet-id /subscriptions/01234567-89ab-cdef-0123-456789abcdef/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

It is highly recommended to use USER assigned identity (option --assign-identity) when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Code: ControlPlaneAddOnsNotReady

Message: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

Ces erreurs contiennent souvent des descriptions détaillées de ce qui s’est produit lors de la création du cluster et fournissent des liens vers des articles qui contiennent plus de détails. En outre, vous pouvez utiliser nos articles de résolution des problèmes comme référence en fonction de l’erreur générée par une opération Azure CLI.

Afficher les détails de l’erreur dans le Portail Azure

Pour afficher les détails des erreurs dans le Portail Azure, examinez le journal d’activité Azure. Pour trouver la liste des journaux d’activité dans le Portail Azure, recherchez dans journal d’activité. Vous pouvez également sélectionner Notifications (l’icône en forme de cloche), puis sélectionner Plus d’événements dans le journal d’activité.

La liste des journaux de la page Journal d’activité contient une entrée de ligne dans laquelle la valeur de colonne Nom de l’opération est nommée Créer ou mettre à jour un cluster managé. La valeur de colonne Événement initié par l’événement correspondant est définie sur le nom de votre compte professionnel ou scolaire. Si l’opération réussit, la valeur de la colonne État indique Accepté. Vous verrez également des entrées de sous-opération pour la création des composants de cluster, telles que les noms d’opération suivants :

  • Créer ou mettre à jour une table de routage
  • Créer ou mettre à jour un groupe de sécurité réseau
  • Mettre à jour l’identité affectée par l’utilisateur - Créer
  • Créer ou mettre à jour Load Balancer
  • Créer ou mettre à jour une adresse IP publique
  • Créer une attribution de rôle
  • Mettre à jour le groupe de ressources

Dans ces entrées de sous-opération, la valeur État est Réussie et le champ Événement initié par est défini sur AzureContainerService.

Que se passe-t-il si une erreur s’est produite à la place ? Dans ce cas, le champ État de l’opération Créer ou mettre à jour un cluster managé affiche Échec. Contrairement aux opérations de création de composants de cluster, vous devez ici développer l’entrée d’opération ayant échoué pour passer en revue les entrées de sous-fonctionnement. Les noms de sous-opérations classiques sont des actions de stratégie, telles que l’action de stratégie « audit » et l’action de stratégie « auditIfNotExists ». Certaines des sous-opérations continueront de montrer qu’elles ont réussi.

Pour approfondir l’examen, vous pouvez sélectionner l’une des sous-opérations ayant échoué. Un volet latéral s’ouvre pour vous permettre de consulter plus d’informations sur la sous-opération. Vous pouvez résoudre les problèmes de valeurs pour des champs tels que Résumé, JSON et Historique des modifications. Le champ JSON contient le texte de sortie de l’erreur au format JSON et fournit généralement les informations les plus utiles.

Afficher les insights de cluster

Le cluster a-t-il été créé dans le Portail Azure et y est-il visible ? Si cela est vrai, vous pouvez générer des insights de cluster qui vous aideront à résoudre les problèmes. Pour accéder à cette fonctionnalité, procédez comme suit :

  1. Dans la Portail Azure, recherchez et sélectionnez Services Kubernetes.

  2. Sélectionnez le nom de votre cluster AKS.

  3. Dans le volet de navigation de la page du cluster AKS, sélectionnez Diagnostiquer et résoudre les problèmes.

  4. Dans la page Diagnostiquer et résoudre les problèmes , sélectionnez le lien Cluster Insights . L’outil Cluster Insights analyse votre cluster, puis fournit une liste de ses résultats dans la section Observations et solutions de la page Insights du cluster .

  5. Sélectionnez l’une des conclusions pour afficher plus d’informations sur un problème et ses solutions possibles.

Afficher les ressources dans le Portail Azure

Dans le Portail Azure, vous souhaiterez peut-être afficher les ressources qui ont été créées lors de la génération du cluster. En règle générale, ces ressources se trouvent dans un groupe de ressources qui commence dans MC_. Le groupe de ressources de cluster managé peut avoir un nom tel que MC_MyResourceGroup_MyManagedCluster_<location-code>. Toutefois, le nom peut être différent si vous avez créé le cluster à l’aide d’un groupe de ressources de cluster managé personnalisé.

Pour rechercher le groupe de ressources, recherchez et sélectionnez Groupes de ressources dans le Portail Azure, puis sélectionnez le groupe de ressources dans lequel le cluster a été créé. La liste des ressources s’affiche dans la page Vue d’ensemble du groupe de ressources.

Avertissement

Nous vous recommandons de ne pas modifier les ressources du groupe de ressources MC_ . Cette action peut entraîner des effets indésirables sur votre cluster AKS.

Pour passer en revue les status d’un groupe de machines virtuelles identiques, vous pouvez sélectionner le nom du groupe identique dans la liste des ressources du groupe de ressources. Il peut avoir un Nom similaire à aks-nodepool1-12345678-vmss, et il aurait une valeur Type de groupe de machines virtuelles identiques. La status du groupe identique s’affiche en haut de la page Vue d’ensemble du pool de nœuds, et plus de détails sont affichés dans le titre Essentials. Si le déploiement a échoué, le status affiché est Échec.

Pour toutes les ressources, vous pouvez consulter les détails pour mieux comprendre pourquoi le déploiement a échoué. Pour un groupe identique, vous pouvez sélectionner le texte Échec status pour afficher les détails de l’échec. Les détails se trouvent dans une ligne qui contient les colonnes État, Niveau et Code . L’exemple suivant montre une ligne de valeurs de colonne.

Column Exemple de valeur
Statut Échec de l’approvisionnement
Niveau Erreur
Code ProvisioningState/failed/VMExtensionProvisioningError

Sélectionnez la ligne pour afficher le champ Message . Il contient encore plus d’informations sur cet échec. Par exemple, le champ Message de l’exemple de ligne commence dans le texte suivant :

La machine virtuelle a signalé un échec lors du traitement de l’extension « vmssCSE ». Message d’erreur : « Échec de l’activation : échec de l’exécution de la commande : commande terminée avec exit status=50 [stdout] [stderr] 0 0 -- :

Avec ces informations, vous pouvez conclure que les machines virtuelles du groupe identique ont échoué et généré une sortie status 50.

Remarque

Si le déploiement du cluster n’a pas atteint le point où ces ressources ont été créées, vous ne pourrez peut-être pas examiner le groupe de ressources de cluster managé dans le Portail Azure.

Utiliser les commandes Kubectl

Pour obtenir une autre option permettant de résoudre les erreurs sur votre cluster, entrez les commandes kubectl pour obtenir des détails sur les ressources déployées dans le cluster. Pour utiliser kubectl, commencez par vous connecter à votre cluster AKS :

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

Selon le type de défaillance et le moment où elle s’est produite, vous ne pourrez peut-être pas vous connecter à votre cluster pour obtenir plus de détails. Mais en général, si votre cluster a été créé et s’affiche dans le Portail Azure, vous devez être en mesure de vous connecter et d’exécuter des commandes kubectl.

Afficher les nœuds de cluster (nœuds kubectl get)

Pour obtenir plus de détails afin de déterminer l’état des nœuds, affichez les nœuds de cluster en entrant la commande kubectl get nodes. Dans cet exemple, aucun nœud ne signale dans le cluster :

$ kubectl get nodes

No resources found

Afficher les pods dans l’espace de noms système (kubectl get pods)

L’affichage des pods dans l’espace de noms kube-system est également un bon moyen de résoudre votre problème. Cette méthode vous permet d’afficher les status des pods système Kubernetes. Dans cet exemple, nous entrons la kubectl get pods commande :

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

Décrire la status d’un pod (kubectl describe pod)

En décrivant les status des pods, vous pouvez afficher les détails de configuration et tous les événements qui se sont produits sur les pods. Exécutez la commande kubectl describe pod :

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

Dans la sortie de commande, vous pouvez voir que le pod ne peut pas se déployer sur un nœud, car aucun nœud n’est disponible.

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.