Kubernetes metrics-server

Photo by Nandhu Kumar from Pexels

TL;DR Le metrics-server collecte des mesures auprès des kubelets et les expose via l'API kubernetes. Cela permet d'accéder aux consommations des différents composants et leur évolution. Cet article illustre l'installation du metrics-server et son utilisation.

Les consommations des pods et des noeuds d'un cluster Kubernetes peuvent générer un volume important de données qui sont accessibles via les kubelets réparties dans l'ensemble du cluster. Le metrics-server collecte et expose ces données à travers l'API kubernetes. Cela permet à d'autres composants tels que kubectl top ou horizontal pod autoscaler d'accéder à ces informations pour les afficher et les utiliser de manière fiable. Pour en savoir plus sur le metrics-server, regardez les documents de conceptions ci-dessous:

Installer le metrics-server

Comme pour la plupart des composants, le metrics-server est relativement direct à installer sur Kubernetes. D'ailleurs, selon la manière dont vous avez installé votre cluster, peut-être est-il déjà disponible. Un moyen simple de vérifier votre configuration est de lancer la commande kubectl top node. Si des informations sont retournées, c'est que le composant est d'ores et déjà installé. Si ce n'est pas le cas, vous pouvez installer le composant depuis le projet comme ci-dessous:

git clone https://github.com/kubernetes-sigs/metrics-server.git
cd metrics-server
kubectl create -f deploy/1.8+/

Remarque: le metrics-server peut prendre un peu de temps avant d'être operationnel. Regardez les logs du pod associé pour vérifier un éventuel message d'erreur. Par ailleurs, selon votre configuration il est possible que les noeuds ne soient pas enregistrés dans le DNS. Si c'est le cas, vous voudrez éditer le deployment à l'aide de la commande kubectl edit deploy/metrics-server -n kube-system et ajouter les 2 paramètres suivants à la ligne de commande --kubelet-insecure-tls et --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname.

Utiliser le metrics-server

Pour accéder aux données du metrics-server, il existe plusieures interfaces. La plus simple est kubectl top comme ci-dessous:

kubectl top pods -A

Vous pouvez obtenir un aperçu des consommations de vos pods:

NAMESPACE            NAME                                         CPU(cores)   MEMORY(bytes)   
default              prometheus-app-855c7db5c4-27wwz              1m           4Mi             
kube-system          coredns-6955765f44-24x79                     3m           6Mi             
kube-system          coredns-6955765f44-jjmkv                     2m           5Mi             
kube-system          etcd-kind-control-plane                      11m          37Mi            
kube-system          kindnet-rl4bh                                1m           4Mi             
kube-system          kube-apiserver-kind-control-plane            20m          269Mi           
kube-system          kube-controller-manager-kind-control-plane   7m           31Mi            
kube-system          kube-proxy-hdtng                             1m           8Mi             
kube-system          kube-scheduler-kind-control-plane            3m           10Mi            
kube-system          metrics-server-67684d476-cjfjr               1m           11Mi            
local-path-storage   local-path-provisioner-7745554f7f-fdt8f      2m           6Mi             
monitoring           grafana-69c5fcb655-7mf72                     2m           22Mi            
monitoring           prometheus-0                                 2m           36Mi

Pour aller plus loin

Il existe d'autres interfaces et notamment les routes proxy/metrics et proxy/metrics/cadvisor disponibles dans l'API sous les ressources associées aux noeuds pour collecter des informations similaires. Le prochain article montrera comment exposer ces informations à l'aide de Prometheus et Grafana...

Easyteam DevOps

Easyteam DevOps