Installez Kubernetes, Prometheus et Grafana en local
Photo de Martin Reisch sur Unsplash

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.
  1. TĂ©lĂ©chargez l’installateur Ă  https://www.docker.com/products/docker-desktop et suivez les instructions.

  2. Une fois installé, activez kubernetes dans le volet Préférences / Kubernetes / Activer Kubernetes.

  3. Vous devriez maintenant voir tous les composants Docker Desktop dans le volet About inclus Kubernetes:

L'interface de Docker Desktop avec la version de ses composants
L'interface de Docker Desktop avec la version de ses composants
  • Collectez les informations de base de votre cluster pour vĂ©rifier que tout fonctionne bien :
% kubectl cluster-info
Zsh
% kubectl get nodes
Zsh
  • Ou mĂȘme:
% kubectl get all -A
Zsh

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
Zsh

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
Zsh

L’adresse est Ă  prĂ©sent:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

Conseils

Je sais alors n’oubliez pas d’enregistrer l’URL!

Vous verrez d’abord cette page de connexion :

Ecran de login du Dashboard
Ecran de login du Dashboard

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

Page principale de Dashboard
Page principale de Dashboard

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
Zsh

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!

Une page du tableau de bord avec les mesures. C'est magnifique !
Une page du tableau de bord avec les mesures. C'est magnifique !

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
Zsh

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
Zsh

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
Zsh

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:

L'interface Grafana aprĂšs une installation complĂšte. Woah!
L'interface Grafana aprĂšs une installation complĂšte. Woah!

đŸ‘šđŸ»â€đŸ’»

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


Jean-Jerome Levy

Ecrit par

Jean-JĂ©rĂŽme LĂ©vy

Consultant DevOps

Professionnel chevronnĂ© dans le domaine de l’informatique, cumulant plus de 20 annĂ©es d’expĂ©rience au sein de DSI de grandes entreprises, mon expertise diversifiĂ©e m’a permis de jouer un rĂŽle clĂ© dans de nombreux projets, caractĂ©risĂ©s par la mise en place de pratiques DevOps innovantes.