
Installez Kubernetes, Prometheus et Grafana en local
Parfois, il peut être utile pour les développeurs d’avoir des outils de monitoring efficaces, installés sur son cluster local Kubernetes. Le choix évident serait d’aller vers Prometheus et Grafana, deux outils très reconnus.
Et c’est là que les ennuis commencent.
Dans cet article, je vais vous montrer comment installer avec succès une plate-forme Kubernetes complète, sur votre machine locale, en particulier sur macOS.
Code source
Tous les scripts sont conservés dans https://github.com/scalastic/local-k8s-installation
Notice
- Cette procédure est destinée à fonctionner sur macOS mais devrait aussi fonctionner sur n’importe quel autre hôte. Cependant, je n’ai pas été en mesure de le tester.
- Les problématiques sont plus liées à la distribution Kubernetes (Docker Desktop) qu’à l’OS lui-même.
Kubernetes
- Nous utiliserons Docker Desktop qui est livré avec un cluster Kubernetes prêt à l’emploi.
Téléchargez l’installateur à https://www.docker.com/products/docker-desktop et suivez les instructions.
Une fois installé, activez kubernetes dans le volet Préférences / Kubernetes / Activer Kubernetes.
Vous devriez maintenant voir tous les composants Docker Desktop dans le volet About inclus Kubernetes:

- Collectez les informations de base de votre cluster pour vérifier que tout fonctionne bien :
% kubectl cluster-info
% kubectl get nodes
- Ou même:
% kubectl get all -A
Le paramètre -A
Depuis Kube 1.14
, nous n’avons plus besoin d’utiliser les --all-namespaces
! Alors ne le faites plus…
Dashboard
Dashboard est une interface utilisateur web de l’API k8s et fournit un moyen facile de visualiser et déboguer les objets kube. Vous pouvez en savoir plus sur Dashboard à l’adresse https://github.com/kubernetes/dashboard
Par défaut, Dashboard est protégé par un jeton, et chaque fois que vous y accéderez, il vous sera demandé d’en fournir un. Cela peut
vraiment être ennuyeux à long terme. Heureusement, Dashboard vous permet de contourner la page de connexion en ajoutant --enable-skip-login
à la configuration.
Note
Le fichier de configuration fourni est patché avec cette instruction (ligne 198)
Pour déployer Dashboard - sans authentification - exécutez la commande suivante :
% kubectl apply -f ./k8s/dashboard-v2.2.0-recommended.yaml
Accédez ensuite à votre tableau de bord depuis votre poste de travail local en créant un canal sécurisé vers votre cluster Kubernetes. Pour faire donc, exécuter la commande suivante:
% kubectl proxy
L’adresse est à présent:
Conseils
Je sais alors n’oubliez pas d’enregistrer l’URL!
Vous verrez d’abord cette page de connexion :

Il suffit d’appuyer sur le bouton skip pour contourner l’authentification.

Metrics Server
Metrics-Server est utilisé pour extraire les mesures des composants k8s et les expose à l’API k8s. Le repo officiel est https://github.com/kubernetes-sigs/metrics-server
Metrics Server sert à mesurer les informations de base : CPU et RAM. L’important est que Horizontal Pod Autoscaler utilise cette API pour collecter des mesures. Il s’agit d’un composant de niveau cluster qui récolte périodiquement les mesures de tous les nœuds Kubernetes suivis par Kubelet. Une fois installé, Dashboard affiche automatiquement ces mesures.
Note
Pour permettre à Metrics Server de collecter ses données sur https, le script original a été modifié pour accepter les connexions TLS non sécurisées en ajoutant - --kubelet-insecure-tls
at line 133.
Appliquez la configuration en entrant :
% kubectl apply -f k8s/metrics-server-components-v0.4.2.yaml
Lors du rechargement du Dashboard, vous devriez maintenant voir les utilisations du processeur et de la mémoire (après un certain temps) 🌈
Vous pouvez essayer la section Pods, c’est ma préférée!

Kube State Metrics
Contrairement à Metrics Server, Kube State Metrics se concentre sur la génération de nombreuses mesures à partir de l’état des objets Kubernetes (par exemple, les mesures basées sur des Deployments, des Replicas, des Pods, etc.). Pour cela, il gère, en mémoire, une photo des états de Kubernetes et génère de nouvelles mesures basées sur celle-ci.
L’installation de Kube State Metrics permet l’accès à ces mesures à partir de systèmes de surveillance tels que Prometheus, notre préoccupation ici.
Pour installer Kube State Metrics, lancez la commande suivante :
% kubectl apply -f k8s/kube-state-metrics-v2.0.0-rc.1.yaml
Prometheus
Prometheus est un système de collecte, d’interrogation, de surveillance et d’alerte. Il est utile quand il s’agit de :
- Collecter des données identifiées par un nom de métrique
- Stocker les séries chronologiques en mémoire et sur disque pour plus d’efficacité
- Lancer des notifications et des alertes en fonction des requêtes de données
La documentation complète est accessible à partir de https://prometheus.io.
Les développeurs de Prometheus fournissent des binaires et des images Docker des composants de Prometheus. Avec un peu d’huile de coude, il est possible de créer un fichier de configuration k8s avec tout ce dont nous avons besoin : accès aux ressources, rôle dédié, configuration, déploiement et exposition de service.
Pour installer la configuration Prometheus, exécutez la commande :
% kubectl apply -f k8s/prometheus.yaml
Vous pouvez accéder à l’interface de Prometheus à l’adresse http://localhost:30000/ … mais attendez de voir la suite !
Grafana
Grafana (https://grafana.com/grafana/) vous permet d’ « interroger, visualiser et alerter en fontion des mesures au moyen d’une interface utilisateur puissante » comme le dit le site.
C'est ce que fait déjà Prometheus !?
Clarifions : dans la pratique, vous développerez votre requête dans Prometheus puis la lancerez dans Grafana.
Pour configurer la source de données Prometheus et installer Grafana, exécutez les commandes :
% kubectl apply -f k8s/grafana-datasource.yaml
% kubectl apply -f k8s/grafana.yaml
Grafana va écouter sur http://localhost:3000/. Le logon par défaut est admin / admin.
Importation du dashboard Grafana
Par défaut, Grafana n’a rien de spécifique et vous devrez configurer un tableau de bord. Heureusement, vous pouvez en importer un, déjà pré-configuré, via l’interface de Grafana. La source principale de tableaux de bord se trouve à l’adresse https://grafana.com/grafana/dashboards.
J’en ai fait un spécifique à un cluster kubernetes local, vous le trouverez ici Dashboard model.
Il ressemble à cela - comme vous pouvez le voir, l’interface graphique Grafana offre de nombreuses possibilités - contrairement à Prometheus:

👨🏻💻
Configurer un tableau de bord dans Grafana peut être long et chronophage. La collecte de mesures dépend de votre hôte, de l’utilisation de VM ou solution de virtualisation et du système d’exploitation sur votre pod. Vous devrez mettre les mains dans le cambouis…
Eh bien, c’est à votre tour de jouer avec cette stack maintenant!
Cheers…