Surveiller des déploiements de charge de travail
Cet article fait partie d’une série. Commencez par la vue d’ensemble.
Il est important de surveiller l’intégrité et les performances de vos charges de travail Kubernetes pour s’assurer qu’elles s’exécutent de manière optimale. Azure Kubernetes Service (AKS) dispose de plusieurs outils que vous pouvez utiliser pour vérifier l’intégrité et les performances de vos déploiements, fonctionnalités et services DaemonSet
.
Outils
Il est important de déterminer si tous les déploiements et fonctionnalités DaemonSet
sont en cours d’exécution. Cet article explique comment déterminer si les réplicas en état prêt et disponible correspondent au nombre de réplicas attendu à l’aide de :
- Le portail Azure.
- La fonctionnalité Container Insights dans Azure Monitor.
- L’outil de ligne de commande kubectl.
- Prometheus et Grafana.
Le portail Azure
Vous pouvez utiliser le portail Azure pour vérifier l’intégrité des composants suivants dans vos charges de travail. Si vous souhaitez obtenir plus d’informations, consultez Accéder aux ressources Kubernetes à partir du portail Azure.
Déploiement, ReplicaSet
, StatefulSet
et DaemonSet
Vérifiez que le nombre de réplicas qui se trouvent en état prêt correspond au nombre de réplicas souhaités. Le portail affiche :
Le nombre de réplicas actuellement disponibles et prêts à servir le trafic. Ces réplicas ont été correctement planifiés sur des nœuds Worker, ont terminé leur processus de démarrage et ont réussi leurs vérifications de préparation.
Le nombre souhaité de réplicas spécifiés pour le déploiement, ou le nombre de réplicas que le déploiement a pour objectif de maintenir. Le contrôleur de déploiement Kubernetes surveille constamment l’état du déploiement et garantit que le nombre réel de réplicas correspond au nombre souhaité.
Services et entrées
Vérifiez que l’état est ok pour tous les services et les entrées.
Stockage
Vérifiez que l’état est lié pour toutes les revendications de volume persistant et les volumes persistants.
Container Insights
Container Insights est une fonctionnalité de Monitor qui fournit des fonctionnalités de supervision pour les charges de travail de conteneur déployées sur AKS ou gérées par Kubernetes avec Azure Arc. Cette fonctionnalité collecte des informations sur les performances et l’intégrité, telles que les métriques de mémoire et de processeur à partir de contrôleurs, de nœuds et de conteneurs. Elle collecte également les journaux de conteneurs pour l’analyse.
Vous pouvez utiliser différents affichages et classeurs prédéfinis pour analyser les données collectées. Examinez les performances et le comportement de différents composants au sein de votre cluster. Avec Container Insights, vous pouvez obtenir des informations sur l’état global de vos charges de travail de conteneur afin de prendre des décisions éclairées pour optimiser leurs performances et résoudre les problèmes.
Utilisez Container Insights pour :
Cibler les goulots d’étranglement des ressources en identifiant les conteneurs s’exécutant sur chaque nœud et leur utilisation de la mémoire et du processeur.
Identifier l’utilisation du processeur et de la mémoire des groupes de conteneurs et de leurs conteneurs hébergés dans des instances de conteneurs.
Afficher les performances globales du contrôleur ou du pod en identifiant où se trouve le conteneur dans un contrôleur ou un pod.
Examiner l’utilisation des ressources par les charges de travail qui sont exécutées sur l’hôte et qui ne sont pas liées aux processus standard prenant en charge le pod.
Comprendre le comportement du cluster sous une charge moyenne et sous la charge la plus lourde pour identifier les besoins de capacité et déterminer la charge maximale que le cluster peut supporter.
Accéder aux journaux et aux métriques de conteneur générés par le moteur de conteneur afin de faciliter la résolution des problèmes en temps réel.
Configurer des alertes pour vous avertir de manière proactive quand l’utilisation du processeur et de la mémoire sur des nœuds ou des conteneurs dépasse vos seuils ou qu’un changement d’état d’intégrité se produit dans le cluster au niveau de l’infrastructure ou du cumul d’intégrité des nœuds ou pour enregistrer ces événements.
Dans le portail Azure, Container Insights fournit plusieurs outils pour surveiller et analyser l’intégrité et les performances d’un cluster AKS.
Cluster : cette fonctionnalité fournit une vue d’ensemble de votre cluster AKS, y compris des métriques clés telles que l’utilisation du processeur et de la mémoire, le nombre de pods et de nœuds, et le trafic réseau. Vous pouvez obtenir des informations sur l’intégrité globale et l’utilisation des ressources du cluster.
Rapports : cette fonctionnalité fournit des rapports prédéfinis que vous pouvez utiliser pour visualiser et analyser différents aspects des performances de votre cluster, tels que l’utilisation des ressources, l’intégrité des pods et des insights sur les conteneurs. Ces données vous aident à comprendre le comportement et les performances de vos conteneurs et charges de travail.
Nœuds : cette fonctionnalité fournit des informations détaillées sur les nœuds de votre cluster. Elle affiche les métriques pour l’utilisation du processeur et de la mémoire, les E/S disque et réseau, ainsi que la condition et l’état de chaque nœud. Vous pouvez utiliser ces données pour surveiller les performances des nœuds individuels, identifier les potentiels goulots d’étranglement et garantir une allocation efficace des ressources.
Contrôleurs : cette fonctionnalité offre une visibilité sur les contrôleurs Kubernetes dans votre cluster AKS. Elle affiche des informations telles que le nombre d’instances de contrôleur, l’état actuel et l’état des opérations du contrôleur. Vous pouvez surveiller l’intégrité et les performances des contrôleurs qui gèrent les déploiements, services et autres ressources de charges de travail.
Conteneurs : cette fonctionnalité fournit des insights sur les conteneurs qui s’exécutent dans votre cluster AKS. Elle fournit des informations relatives à l’utilisation des ressources, aux redémarrages et aux événements de cycle de vie de chaque conteneur. Vous pouvez utiliser ces données pour surveiller et dépanner les conteneurs dans vos charges de travail.
Journaux dynamiques : la fonctionnalité journaux dynamiques fournit un stream en direct d’événements de journaux à partir de conteneurs en cours d’exécution. Vous pouvez donc afficher les journaux de conteneur en temps réel. Vous pouvez utiliser ces données pour surveiller et résoudre efficacement les applications, et identifier et résoudre rapidement les problèmes dans vos conteneurs.
Pour plus d’informations, consultez les ressources suivantes :
- Superviser les performances de votre cluster Kubernetes avec Container Insights
- Configurer la surveillance de GPU avec Container Insights
- Surveiller et visualiser les configurations réseau avec le gestionnaire de stratégie réseau Azure
- Surveiller les déploiements et métriques HPA avec Container Insights
- Surveiller les métriques de volumes persistants
- Surveiller la sécurité avec Syslog
- Rapports dans Container Insights
- Métriques collectées par Container Insights
- Afficher les journaux, métriques de pod et événements Kubernetes en temps réel
- Afficher les métriques de clusters en temps réel
Outil en ligne de commande
Pour vérifier l’état de vos charges de travail, vous pouvez utiliser l’outil de ligne de commande kubectl pour communiquer avec le plan de contrôle d’un cluster Kubernetes via l’API Kubernetes.
Pods
Pour répertorier les pods en cours d’exécution dans tous les espaces de noms, exécutez la commande suivante :
kubectl get pod -A
Dans la sortie de la commande, la colonne READY fournit des informations importantes sur l’état de préparation des conteneurs du pod.
Le premier nombre représente les conteneurs actuellement en état prêt. Ces conteneurs ont passé les probes readiness et sont prêts à gérer le trafic entrant. Le deuxième nombre représente le nombre total de conteneurs définis dans le pod, quel que soit leur état de préparation. Cela inclut des conteneurs prêts et ceux qui sont toujours en cours d’initialisation ou qui rencontrent des problèmes.
Vérifiez que le premier nombre (celui des conteneurs prêts) correspond au deuxième nombre (celui des conteneurs totaux) pour le pod. S’il est différent, certains conteneurs ne sont peut-être pas prêts ou des problèmes peuvent les empêcher d’atteindre l’état prêt.
Déploiement, StatefulSet
, DaemonSet
et StatefulSet
Exécutez la commande suivante pour récupérer les déploiements dans tous les espaces de noms :
kubectl get deploy -A
Dans la sortie de la commande kubectl get deploy
, les nombres de la colonne READY indiquent l’état de préparation actuel des réplicas dans un déploiement.
Le premier nombre représente le nombre de réplicas prêts et disponibles pour servir le trafic. Ces réplicas ont démarré et réussi leurs vérifications de préparation. Le deuxième nombre représente le nombre souhaité de réplicas spécifiés dans la configuration du déploiement. Il s’agit du nombre cible de réplicas que le déploiement vise à maintenir.
Il est important de s’assurer que le premier nombre correspond au deuxième. Cela indique que le nombre de réplicas souhaité est en cours d’exécution et prêt. Toute différence entre ces deux nombres peut indiquer des problèmes de mise à l’échelle ou de préparation que vous devez résoudre.
Exécutez la commande suivante pour récupérer les fonctionnalités StatefulSet dans tous les espaces de noms :
kubectl get statefulset -A
Exécutez la commande suivante pour récupérer les fonctionnalités DaemonSet dans tous les espaces de noms :
kubectl get ds -A
Vous pouvez exécuter la commande kubectl get ds
pour vérifier que DaemonSet
s’exécute comme prévu. Par exemple, vous pouvez exécuter la commande suivante pour vérifier que l’agent Container Insights a été correctement déployé :
kubectl get ds ama-logs --namespace=kube-system
De même, si vous configurez votre cluster AKS pour qu’il collecte les métriques Prometheus dans Surveillance pour Prometheus managé, vous pouvez exécuter la commande suivante pour vérifier que DaemonSet
est déployé correctement sur les pools de nœuds Linux :
kubectl get ds ama-metrics-node --namespace=kube-system
Cette sortie fournit des informations sur les fonctionnalités de DaemonSet
dans votre cluster. Examinez la sortie pour vous assurer que le nombre de pods en état prêt, actuel et souhaité est le même partout. Si c’est le cas, le nombre souhaité de pods spécifié dans la configuration DaemonSet
est égal au nombre de pods en cours d’exécution et prêts.
Nous vous recommandons d’effectuer la même vérification pour les fonctionnalités ReplicaSet. Vous pouvez exécuter la commande suivante pour récupérer les fonctionnalités ReplicaSet
dans tous les espaces de noms :
kubectl get rs -A
Vérifiez que les nombres de cette sortie sont identiques pour chaque état afin que le nombre voulu de pods ou de réplicas s’exécute comme prévu. La présence de différences peut indiquer la nécessité d’un examen ou d’une résolution de problèmes supplémentaires à l’aide de l’une des commandes suivantes.
kubectl describe : Vous pouvez utiliser la commande kubectl describe pour obtenir des informations détaillées sur les ressources Kubernetes, telles que les pods, les déploiements et les services. Vous pouvez obtenir une vue d’ensemble complète de la ressource spécifiée, notamment son état actuel, ses événements, ses conditions et ses métadonnées associées. Les informations sont récupérées à partir du serveur d’API Kubernetes. Cette commande est utile pour résoudre les problèmes et comprendre l’état d’une ressource.
Vous pouvez exécuter kubectl describe pod <pod-name>
pour obtenir des informations détaillées sur un pod spécifique, notamment son état actuel, ses événements, ses étiquettes et les conteneurs qui lui sont associés. La sortie affiche des informations telles que l’état, les événements, les volumes et les conditions du pod.
kubectl logs : Vous pouvez utiliser la commande kubectl logs pour récupérer les journaux générés par un conteneur au sein d’un pod. Cette commande est utile pour le débogage et la résolution des problèmes. Vous pouvez afficher les journaux en temps réel ou récupérer des journaux d’activité historiques à partir d’un conteneur.
Pour afficher les journaux de conteneur, vous pouvez utiliser la commande kubectl logs <pod-name> -c <container-name>
. Remplacez <pod-name>
par le nom de votre pod. Remplacez <container-name>
par le nom du conteneur à partir duquel vous souhaitez extraire les journaux. S’il n’existe qu’un seul conteneur dans le pod, vous n’avez pas besoin de spécifier le nom du conteneur. Vous pouvez également utiliser l’indicateur de -f
avec kubectl logs
pour suivre les journaux en temps réel. Cet indicateur est similaire à la commande Linux tail -f
.
kubectl events : Vous pouvez utiliser la commande kubectl events pour résoudre des problèmes lorsqu’un déploiement, DaemonSet
, ReplicaSet
ou un pod ne démarre pas ou rencontre des problèmes au démarrage. Cette commande fournit une liste chronologique d’événements associés à la ressource spécifiée. Vous pouvez obtenir des informations sur l’origine du problème.
Pour utiliser kubectl events
, vous pouvez exécuter la commande kubectl events
suivie d’un nom de ressource spécifique. Vous pouvez également utiliser des sélecteurs pour filtrer les événements en fonction des étiquettes, des espaces de noms ou d’autres critères.
Par exemple, pour récupérer des événements liés à un pod spécifique, vous pouvez exécuter kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod
. Remplacez <pod-name>
par le nom du pod que vous souhaitez examiner. La sortie de la commande kubectl events
affiche des informations telles que le type d’événement (normal ou avertissement), le message d’événement, la raison de l’événement et l’horodatage lorsque l’événement s’est produit. Vous pouvez utiliser ces informations pour déterminer ce qui a provoqué l’échec ou le problème au démarrage.
Si vous pensez qu’une ressource spécifique (comme un déploiement, DaemonSet
ou ReplicaSet
) rencontre des problèmes, vous pouvez filtrer les événements à l’aide de sélecteurs. Par exemple, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment
affiche les événements liés à un déploiement spécifique. Examinez les événements afin que vous puissiez réunir des détails importants sur les erreurs potentielles, les échecs ou d’autres événements susceptibles d’empêcher le bon démarrage de la ressource. Utilisez ces données pour vous aider à résoudre les problèmes qui affectent la ressource.
Surveillance dans des clusters avec Prometheus et Grafana
Si vous déployez Prometheus et Grafana dans votre cluster AKS, vous pouvez utiliser le Tableau de bord des détails du cluster K8 pour obtenir des insights. Ce tableau de bord présente des informations collectées à partir des métriques de cluster Prometheus, telles que l’utilisation du processeur et de la mémoire, l’activité réseau et l’utilisation du système de fichiers. Il présente également des statistiques détaillées pour des services systemd, des conteneurs et des pods individuels.
Pour garantir l’intégrité et les performances de vos déploiements, travaux, pods et conteneurs, vous pouvez utiliser les fonctionnalités du tableau de bord. Sélectionnez Déploiements pour afficher le nombre de réplicas pour chaque déploiement et le nombre total de réplicas. Sélectionnez Conteneurs pour accéder à un graphique qui affiche les conteneurs en cours d’exécution, en attente, ayant échoué et réussis.
Surveiller un service géré pour Prometheus et Azure Managed Grafana
Vous pouvez utiliser des tableaux de bord prédéfinis pour visualiser et analyser des mesures Prometheus. Pour ce faire, vous devez configurer votre cluster AKS pour collecter des mesures Prometheus dans Surveiller un service géré pour Prometheus et connectez votre Espace de travail Azure Monitor à un espace de travail Azure Managed Grafana.
Installez les tableaux de bord prédéfinis pour obtenir une vue complète du niveau de performance et de l’intégrité de votre cluster Kubernetes. Pour obtenir des instructions d’installation détaillées, consultez Mélange de supervision Prometheus pour Kubernetes. Les tableaux de bord sont approvisionnés dans l’instance Azure Managed Grafana spécifiée dans le dossier Prometheus managé. Certains tableaux de bord comprennent :
- Kubernetes / Ressources de calcul / Cluster
- Kubernetes / Ressources de calcul / Espace de noms (pods)
- Kubernetes / Ressources de calcul / Nœud (pods)
- Kubernetes / Ressources de calcul / Pod
- Kubernetes / Ressources de calcul / Espace de noms (charges de travail)
- Kubernetes / Ressources de calcul / Charge de travail
- Kubernetes / Kubelet
- Exportateur de nœuds / Méthode USE / Nœud
- Exportateur de nœuds / Nœuds
- Kubernetes / Ressources de calcul / Cluster (Windows)
- Kubernetes / Ressources de calcul / Espace de noms (Windows)
- Kubernetes / Ressources de calcul / Pod (Windows)
- Kubernetes / Méthode USE / Cluster (Windows)
- Kubernetes / Méthode USE / Nœud (Windows)
Ces tableaux de bord intégrés sont largement utilisés dans la communauté open source pour la surveillance des clusters Kubernetes avec Prometheus et Grafana. Utilisez ces tableaux de bord pour voir des mesures, telles que l’utilisation de la ressource, l’intégrité du pod et l’activité réseau. Vous pouvez également créer des tableaux de bord personnalisés adaptés à vos besoins en matière de monitoring. Les tableaux de bord vous aident à surveiller et analyser efficacement des mesures Prometheus dans votre cluster AKS, ce qui vous permet d’optimiser le niveau de performance, de résoudre des problèmes et de veiller à une opération fluide de vos charges de travail Kubernetes.
Vous pouvez utiliser le tableau de bord Kubernetes / Ressources de calcul / Nœud (pods) pour afficher des mesures pour des nœuds de l’agent Linux. Vous pouvez visualiser l’utilisation du processeur, le quota du processeur, l’utilisateur de la mémoire et le quota de mémoire de chaque pod.
Le tableau de bord Grafana Kubernetes / Ressources de calcul / Pod fournit des insights sur la consommation des ressources et les métriques de performances d’un cluster, d’un espace de noms et d’un pod sélectionné. Vous pouvez utiliser ce tableau de bord pour obtenir des métriques liées à l’utilisation du processeur, à sa limitation, au quota d’UC, à l’utilisation de la mémoire, au quota de mémoire, aux métriques réseau et aux métriques de stockage. Dans le tableau de bord, sélectionnez un cluster, un espace de noms et un pod AKS dans l’espace de noms choisi pour afficher les détails suivants :
Utilisation du processeur : ce graphique affiche l’utilisation du processeur au fil du temps pour le pod sélectionné. Vous pouvez passer en revue le modèle de consommation du processeur et identifier les pics ou anomalies potentiels.
Limitation du processeur : ce graphique fournit des insights sur la limitation du processeur, qui se produit lorsqu’un pod dépasse ses limites de ressources processeur. Surveillez cette métrique pour identifier les zones où les performances du pod sont limitées en raison de la limitation du processeur.
Quota d’UC : ce graphique affiche le quota d’UC alloué pour le pod sélectionné. Si le pod dépasse son quota d’UC affecté, des ajustements de ressources peuvent être nécessaires.
Utilisation de la mémoire : ce graphique présente l’utilisation de la mémoire du pod sélectionné. Surveillez le modèle de consommation de mémoire et identifiez les problèmes liés à la mémoire.
Quota de mémoire : ce graphique affiche le quota de mémoire alloué pour le pod. Si le pod dépasse son quota de mémoire affecté, une optimisation des ressources peut être nécessaire.
Métriques de mise en réseau : ces graphiques affichent la bande passante reçue et transmise, ainsi que le taux de paquets reçus et transmis. Ces métriques vous aident à surveiller l’utilisation du réseau et à détecter les éventuels goulots d’étranglement ou anomalies réseau.
Métriques de stockage : cette section fournit des informations sur les métriques liées au stockage, telles que les opérations d’E/S par seconde (IOPS) et le débit. Surveillez ces métriques pour évaluer les performances et l’efficacité du stockage de pods.
Vous pouvez utiliser le tableau de bord Grafana Kubernetes / Ressources de calcul / Pod pour obtenir des insights sur l’utilisation des ressources, les performances et le comportement des pods dans votre cluster Kubernetes. Utilisez ces informations pour optimiser l’allocation de ressources, résoudre les problèmes de performances et prendre des décisions éclairées pour garantir le bon fonctionnement de vos charges de travail conteneurisées.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteur principal :
- Paolo Salvatori | Ingénieur client principal
Autres contributeurs :
- Kevin Harris | Spécialiste de solution principal
- Francis Simy Nazareth | Spécialiste technique senior
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Limites du nombre de disques de machine virtuelle
- Performances des disques et des machines virtuelles