Résolution des problèmes de création de cluster AKS de base
Cet article décrit les méthodes de dépannage de base à utiliser si vous ne pouvez pas créer ou déployer un cluster Microsoft Azure Kubernetes Service (AKS) avec succès.
Prerequisites
Azure CLI (version 2.0.59 ou ultérieure).
Outil Kubernetes kubectl . Pour installer kubectl à l’aide d’Azure CLI, exécutez la commande az aks install-cli .
Afficher les erreurs à partir d’Azure CLI
Si l’opération échoue lorsque vous essayez de créer des clusters à l’aide d’Azure CLI, la sortie affiche des informations d’erreur. Voici un exemple de commande et de sortie Azure CLI :
# Create a cluster specifying subnet
az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS
Exemple de sortie :
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://video2.skills-academy.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
Vous pouvez identifier le code d’erreur et le message d’erreur à partir de la sortie. Dans ce cas, ils sont les suivants :
- Code d’erreur :
ControlPlaneAddOnsNotReady
- Message d’erreur :
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 descriptions contiennent souvent des détails sur ce qui s’est passé dans la création du cluster, et ils sont liés à des articles qui contiennent encore plus de détails. En outre, vous pouvez utiliser nos articles de dépannage comme référence, en fonction des erreurs produites par l’opération Azure CLI.
Afficher les détails de l’erreur dans le Portail Azure
Pour examiner les erreurs de création de cluster AKS dans le Portail Azure, ouvrez le journal d’activité. Vous pouvez filtrer les résultats en fonction de vos besoins. Pour ce faire, sélectionnez Ajouter un filtre pour ajouter d’autres propriétés au filtre.
Dans la page Journal d’activité, recherchez les entrées de journal dans lesquelles la colonne Nom de l’opération affiche Créer ou mettre à jour un cluster managé.
L’événement initié par la colonne indique à l’utilisateur qui a effectué l’opération, qui peut être un compte professionnel, un compte scolaire ou une identité managée Azure.
Si l’opération réussit, la valeur de la colonne État est Acceptée. Vous verrez également des entrées de sous-opération pour la création des composants du cluster, telles que les noms d’opérations 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 create
- Créer ou mettre à jour l’équilibreur de charge
- 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 d’état est Réussie et l’événement lancé par le champ est défini sur AzureContainerService.
Que se passe-t-il si une erreur s’est produite à la place ? Dans ce cas, la valeur d’état a échoué. Contrairement aux opérations de création de composants de cluster, vous devez développer les entrées de sous-opération ayant échoué pour les examiner. Les noms de sous-opération classiques sont des actions de stratégie, telles que l’action de stratégie « audit » et l’action de stratégie « auditIfNotExists ». Toutes les sous-opérations ne échouent pas nécessairement ensemble. Vous pouvez vous attendre à ce que certains d’entre eux réussissent.
Sélectionnez l’une des sous-opérations ayant échoué pour l’examiner plus en détail. Sélectionnez les onglets Résumé, JSON et Historique des modifications pour résoudre le problème. L’onglet JSON contient le texte de sortie de l’erreur au format JSON et fournit généralement les informations les plus utiles.
Voici un exemple de journal détaillé au format JSON :
{
"status": {
"value": "Failed",
"localizedValue": "Failed"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2024-08-30T10:06:07Z",
"subscriptionId": "<subscriptionId>",
"tenantId": "<tenantId>",
"properties": {
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://video2.skills-academy.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}
Afficher les insights de cluster
Le cluster a-t-il été créé dans le Portail Azure et est-il visible ? Si c’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 :
Dans le Portail Azure, recherchez et sélectionnez services Kubernetes.
Sélectionnez le nom de votre cluster AKS.
Dans le volet de navigation de la page du cluster AKS, sélectionnez Diagnostiquer et résoudre les problèmes.
Dans la page Diagnostiquer et résoudre les problèmes , sélectionnez le lien Cluster Insights . L’outil d’insights de cluster analyse votre cluster, puis fournit une liste de ses résultats dans la section Observations et Solutions de la page Insights du cluster.
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 pouvez 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 dont le nom 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 est affichée dans la page Vue d’ensemble du groupe de ressources.
Avertissement
Nous vous recommandons de ne pas modifier les ressources dans le groupe de ressources MC_ . Cette action peut affecter votre cluster AKS.
Pour passer en revue l’état 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 une valeur Name qui ressemble à aks-nodepool1-12345678-vmss, et il s’agit d’une valeur type du groupe de machines virtuelles identiques. L’état du groupe identique apparaît en haut de la page Vue d’ensemble du pool de nœuds, et d’autres détails sont affichés dans le titre Essentials. Si le déploiement a échoué, l’état affiché a échoué.
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 d’état Échec pour afficher les détails de l’échec. Les détails se trouvent dans une ligne qui contient les colonnes Status, Level et Code . L’exemple suivant montre une ligne de valeurs de colonne.
Colonne | Valeur d’exemple |
---|---|
État | Échec de l’approvisionnement |
Level | Error |
Code | ProvisioningState/failed/VMExtensionProvisioningError |
Sélectionnez la ligne pour afficher le champ Message . Cela contient encore plus d’informations sur cette défaillance. 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 0 -- :
Avec ces informations, vous pouvez conclure que les machines virtuelles du groupe identique ont échoué et généré l’état de sortie 50.
Note
Si le déploiement du cluster n’a pas atteint le point auquel ces ressources auraient été créées, vous ne pourrez peut-être pas passer en revue le groupe de ressources de cluster managé dans le Portail Azure.
Utiliser des commandes Kubectl
Pour obtenir une autre option permettant de résoudre les erreurs sur votre cluster, utilisez les commandes kubectl pour obtenir des détails sur les ressources déployées dans le cluster. Pour ce faire, connectez-vous d’abord à votre cluster AKS :
az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster
En fonction du type d’échec et du moment où il s’est produit, il se peut que vous ne puissiez pas vous connecter à votre cluster pour obtenir plus de détails. Toutefois, si votre cluster a été créé et apparaît 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 (kubectl get nodes)
Pour déterminer l’état des nœuds de cluster, affichez les nœuds en exécutant la kubectl get nodes
commande. 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 l’état des pods système Kubernetes. Dans cet exemple, nous entrez 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 l’état d’un pod (kubectl décrire le pod)
En décrivant l’état des pods, vous pouvez afficher les détails de la configuration et tous les événements qui se sont produits sur les pods. Exécutez la commande kubectl describe pods
:
$ 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 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.