Comment surveiller l'utilisation des ressources Kubernetes avec Metrics Server et Kubectl Top

0
55

Surveiller l'utilisation des ressources de votre cluster Kubernetes est essentiel afin que vous puissiez suivre les performances et comprendre si vos charges de travail fonctionnent efficacement. La commande kubectl top diffuse les métriques directement depuis votre cluster, vous permettant d'accéder aux bases dans votre terminal.

Cette commande ne fonctionnera généralement pas immédiatement dans un nouvel environnement Kubernetes. Cela dépend du module complémentaire Metrics Server installé dans votre cluster. Ce composant collecte les métriques de vos nœuds et pods et fournit une API pour récupérer les données.

Dans cet article, nous allons montrer comment installer Metrics Server et accéder à ses mesures à l'aide de kubectl top. Vous pourrez voir la consommation de CPU et de mémoire de chacun de vos nœuds et pods.

Ajout de Metrics Server à Kubernetes

Les distributions Kubernetes ne sont normalement pas fournies avec Metrics Server intégré. Vous pouvez facilement vérifier si votre cluster est déjà pris en charge en essayant d'exécuter kubectl top :

$ kubectl top node error : Metrics API not available

Le message d'erreur confirme que l'API du serveur de métriques n'est pas présente dans le cluster.

Metrics Server est géré au sein de la communauté Kubernetes Special Interest Group (SIG). Il peut être ajouté à votre cluster à l'aide de son manifeste YAML simple ou de la charte Helm du projet.

Nous allons utiliser le fichier manifeste pour ce didacticiel. Exécutez la commande Kubectl suivante pour installer le serveur de métrique :

$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml serviceaccount/metrics-server a créé le clusterrole.rbac.authorization.k8s.io/system:aggregated- metrics-reader créé clusterrole.rbac.authorization.k8s.io/system:metrics-server créé rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader créé clusterrolebinding.rbac.authorization.k8s.io/metrics- server:system:auth-delegator créé clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server créé service/metrics-server créé deployment.apps/metrics-server créé apiservice.apiregistration.k8s.io/v1beta1.metrics. k8s.io créé

Metrics Server va maintenant commencer à collecter et à exposer les données de consommation des ressources Kubernetes. Si l'installation échoue avec une erreur, vous devez vérifier que votre cluster répond aux exigences du projet. Metrics Server a des dépendances spécifiques qui peuvent ne pas être prises en charge dans certains environnements.

De nombreuses distributions Kubernetes regroupent la prise en charge de Metrics Server en utilisant leur propre système de modules complémentaires. Vous pouvez utiliser cette commande pour ajouter facilement Metrics Server à un cluster Minikube, par exemple :

$ minikube addons enable metrics-server Utilisation de l'image k8s.gcr.io/metrics-server/metrics-server:v0.4.2 Le ' L'addon metrics-server' est activé

Récupération des métriques avec Kubectl Top

Avec Metrics Server installé, vous pouvez désormais exécuter kubectl top pour accéder aux informations qu'il collecte.

Utilisez la sous-commande node pour obtenir l'utilisation actuelle des ressources de chacun des nœuds de votre cluster :

$ kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% minikube 249m 3% 847Mi 2%

La sous-commande pod fournit des métriques individuelles pour chacun de vos pods :

$ kubectl top pod NAME CPU (cœurs) MÉMOIRE (octets) nginx 120m 8Mi

Cela fera apparaître les pods dans l'espace de noms par défaut. Ajoutez l'indicateur –namespace si vous êtes intéressé par les pods dans un espace de noms spécifique :

$ kubectl top pod –namespace demo-app NAME CPU(cores) MEMORY(bytes) nginx 0m 2Mi

Le L'indicateur –all-namespaces est également pris en charge pour répertorier tous les pods de votre cluster.

Les métriques peuvent mettre quelques minutes à être disponibles après la création de nouveaux pods. Il y a un retard dans le pipeline du serveur de métriques afin qu'il ne devienne pas lui-même un problème de performances.

La commande kubectl top ne vous submerge pas avec des dizaines de métriques. Il se concentre sur la couverture de l'essentiel de l'utilisation du processeur et de la mémoire. Ce démarrage de base peut être suffisant pour les scénarios où vous avez simplement besoin de données rapidement, comme l'identification du pod qui a provoqué un pic d'utilisation globale.

Une source de confusion peut être les valeurs de 100 m signalées dans le champ CPU (cœurs). La commande affiche l'utilisation du processeur en millicœurs. Une mesure de 1000m signifie toujours 100% de consommation d'un seul cœur de CPU. 500 m indique une consommation de 50 % d'un cœur, tandis que 2 000 m signifie que deux cœurs sont occupés.

Modification de l'ordre de tri des objets

La commande kubectl top peut éventuellement trier la liste d'objets émise par consommation de CPU ou de mémoire. Cela facilite le repérage rapide des nœuds ou des pods qui exercent la pression la plus élevée sur les ressources du cluster.

Ajoutez l'indicateur –sort-by avec cpu ou memory comme valeur pour activer ce comportement :< /p>$ kubectl top pod –sort-by=memory NOM CPU(cores) CPU% MEMORY(bytes) MEMORY% nginx-1 249m 3% 1790Mi 5% nginx-2 150m 1% 847Mi 2%

Filtrer la liste d'objets

Comme avec d'autres commandes Kubectl, le drapeau –selector vous permet de filtrer la liste d'objets en éléments avec des étiquettes spécifiques :

$ kubectl top pod – -selector application=demo-app NOM CPU(cœurs) CPU% MEMORY(bytes) MEMORY% nginx-1 249m 3% 1790Mi 5% nginx-2 150m 1% 847Mi 2%

Dans cet exemple, seuls les pods qui ont le libellé application : demo-app seront inclus dans la sortie. =, == et != sont pris en charge en tant qu'opérateurs. Plusieurs contraintes peuvent être appliquées en les enchaînant sous la forme d'une chaîne séparée par des virgules, telle que application=demo-app,version!=1. Les objets n'apparaîtront que s'ils correspondent à tous les filtres d'étiquettes de votre requête.

Obtenir l'utilisation d'une ressource spécifique

Les sous-commandes du nœud supérieur et du pod supérieur peuvent toutes deux recevoir le nom d'un nœud ou d'un pod spécifique à récupérer. Les métriques actuelles associées à cet élément seront affichées de manière isolée.

Fournissez le nom de l'objet en tant qu'argument simple à la commande, juste après le nœud ou le pod :

$ kubectl top node minikube NOM CPU(cœurs) CPU% MÉMOIRE(octets) MÉMOIRE% minikube 245m 3% 714Mi 2%

Résumé

La commande kubectl top affiche les métriques de consommation de ressources essentielles pour les nœuds et les pods de votre cluster Kubernetes. Vous pouvez l'utiliser pour vérifier rapidement l'utilisation du processeur et de la mémoire associée à chacune de vos charges de travail. Ces informations peuvent être utiles pour diagnostiquer les problèmes de performances et identifier quand il est temps d'ajouter un autre nœud.

Avant d'utiliser la commande, vous devez installer le serveur de métriques Kubernetes dans votre cluster. Cela fournit l'API qui expose les données d'utilisation des ressources. L'activation de Metrics Server entraîne une surcharge de performances, mais celle-ci est généralement négligeable dans la plupart des déploiements. Il nécessite généralement 1 million de cœurs de processeur et 2 Mo de mémoire par nœud surveillé, bien que cela puisse varier en fonction des charges de travail exécutées dans votre environnement spécifique.

LIRE LA SUITE

  • &rsaquo ; Examen de la chaise de jeu Vertagear SL5000 : confortable, réglable, imparfaite
  • &rsaquo ; Examen du chargeur UGREEN Nexode 100 W : plus qu'assez de puissance
  • &rsaquo ; 10 fonctionnalités du casque VR Quest que vous devriez utiliser
  • &rsaquo ; 10 fonctionnalités iPhone que vous devriez utiliser
  • › Les 5 plus grands mythes sur Android
  • &rsaquo ; Samsung Galaxy Z Flip 4 a des mises à niveau internes, pas des modifications de conception