Pourquoi devriez-vous utiliser Kubernetes pour vos environnements de développement
Agence web » Actualités du digital » Comment surveiller l’utilisation des ressources Kubernetes avec Metrics Server et Kubectl Top

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

La surveillance de l’utilisation des ressources de votre cluster Kubernetes est essentielle pour vous permettre de suivre les performances et de comprendre si vos charges de travail fonctionnent efficacement. La kubectl top La commande diffuse les métriques directement à partir de votre cluster, vous permettant d’accéder aux bases de 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 CPU et mémoire de chacun de vos nœuds et pods.

Ajouter un serveur de métriques à 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 utiliserons le fichier manifeste pour ce didacticiel. Exécutez la commande Kubectl suivante pour installer le serveur de métriques :

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

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
Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
The 'metrics-server' addon is enabled

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

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

Utilisez le node sous-commande 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 pod la sous-commande fournit des métriques individuelles pour chacun de vos pods :

$ kubectl top pod
NAME    CPU(cores)   MEMORY(bytes)   
nginx   120m         8Mi

Cela fera apparaître les pods dans le default espace de noms. Ajouter le --namespace indicateur 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

La --all-namespaces flag 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 kubectl top La commande 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 la 100m valeurs rapportées dans le CPU(cores) champ. 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 processeur. 500m indique 50 % de consommation d’un cœur, tandis que 2000m signifie que deux cœurs sont occupés.

Modification de l’ordre de tri des objets

La kubectl top La commande 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.

Ajouter le --sort-by drapeau avec soit cpu ou memory comme valeur pour activer ce comportement :

$ kubectl top pod --sort-by=memory
NAME       CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
nginx-1    249m         3%     1790Mi          5%
nginx-2    150m         1%     847Mi           2%

Filtrage de la liste d’objets

En commun avec d’autres commandes Kubectl, le --selector flag vous permet de filtrer la liste d’objets aux éléments avec des étiquettes spécifiques :

$ kubectl top pod --selector application=demo-app
NAME       CPU(cores)   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 application: demo-app l’étiquette sera incluse dans la sortie. =, ==et != sont pris en charge en tant qu’opérateurs. Plusieurs contraintes peuvent être appliquées en les enchaînant comme une chaîne séparée par des virgules, comme application=demo-app,version!=1. Les objets ne s’afficheront que s’ils correspondent à tous les filtres d’étiquettes de votre requête.

Obtenir l’utilisation d’une ressource spécifique

La top node et top pod les sous-commandes 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 isolément.

Fournissez le nom de l’objet comme argument simple à la commande, juste après node ou pod:

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

Sommaire

La kubectl top La commande affiche les métriques essentielles de consommation de ressources 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.

★★★★★