Tableau de bord et ligne de commande
Objectifs du chapitre et prérequis
Ce chapitre fera tout d’abord un petit historique sur l’origine du projet et sur les notions autour des containers.
La suite sera consacrée à une introduction sur l’utilisation de Kubernetes et la découverte de quelques éléments :
-
Le tableau de bord (dashboard) Kubernetes.
-
La commande kubectl.
-
Le moteur Docker de Minikube.
-
La consultation de quelques objets de base (pods et nodes).
À la fin de ce chapitre, vous disposerez des éléments suivants :
-
Un cluster Kubernetes fonctionnel.
-
Un contexte kubectl cohérent.
Afin de suivre l’ensemble des exercices, il est indispensable de disposer d’une connexion Internet haut débit (ADSL ou supérieure).
Préambule
1. Origine du nom et du logo
Kubernetes est un mot d’origine grec (κυβερνήτης) qui signifie timonier (ou pilote). En navigation, c’est la personne qui est en charge de tenir la barre du gouvernail.
Chez Google, le nom interne de ce projet était Project Seven, en référence à un personnage de l’univers Star Trek (Seven of Nine ou de son vrai nom Annika Hansen). Les sept rayons du logo en forme de barre de gouvernail sont un clin d’œil à cet ancien nom.
2. Pourquoi utiliser Kubernetes ?
La sortie de Docker ces dernières années a constitué une rupture importante dans la manière de gérer les applications au sein d’un système d’information. Il devenait ainsi possible de réaliser des opérations auparavant compliquées de façon plus rapide et simple, comme par exemple :
-
démarrer des environnements de tests à la demande,
-
s’affranchir des problèmes de dépendances de librairies,
-
uniformiser les livrables de tous les environnements,
-
isoler de manière très poussée les ressources sur un même serveur.
Comme tout nouvel outil, certaines questions n’avaient pas forcément de solutionsimple et introduisaient de nouveaux problèmes. Parmi ces problèmes, on retrouve les points suivants :...
Le tableau de bord de Kubernetes (dashboard)
1. Présentation
Le dashboard de Kubernetes est un moyen de consulter l’état des différents éléments d’un cluster. Pour l’utilisateur débutant sur cette technologie, il s’agit d’une bonne porte d’entrée puisque cette application permet de consulter graphiquement les différents constituants d’un cluster Kubernetes.
Néanmoins, si ce dernier peut être toléré sur une machine Minikube, il n’est pas forcément souhaitable de le déployer sur les plateformes de production pour des raisons de sécurité.
2. Tableau de bord Kubernetes sur service managé
Dans le cas où vous feriez appel à un service managé, il sera peut-être nécessaire de procéder à l’installation du dashboard avant de continuer.
Consultez la section Déploiement du tableau de bord Kubernetes dans les annexes afin de réaliser l’installation de ce dernier.
3. Déploiement du dashboard sur Minikube
Sous Minikube, l’activation du dashboard se fait à l’aide de l’instruction minikube suivie des options suivantes :
-
L’option addons suivie du mot-clé enable.
-
Le nom du plugin à activer (ici dashboard).
Ci-dessous la commande à lancer :
$ minikube addons enable dashboard
Ci-après le résultat de cette commande :
Using image kubernetesui/dashboard:v2.3.1
Using image kubernetesui/metrics-scraper:v1.0.7
Some dashboard features require the metrics-server addon. To
enable all features please run:
minikube addons enable metrics-server
The 'dashboard' addon is enabled
Comme indiqué par la commande précédente, activez le serveur de métriques (metrics-server) pour bénéficier de l’ensemble des fonctionnalités du tableau de bord :
$ minikube addons enable metrics-server
Ci-dessous les messages renvoyés par cette opération :
Using image k8s.gcr.io/metrics-server/metrics-server:v0.4.2
The 'metrics-server' addon is enabled
4. Accès au dashboard...
Présentation de l’outil kubectl
1. Préambule
Dans la section précédente, vous avez découvert quelques objets nécessaires au déploiement d’une application. Avant d’aller plus loin et de commencer à créer ces objets en ligne de commande, vous allez vous familiariser avec la commande kubectl.
2. Consultation des éléments
La consultation de l’état des objets dans Kubernetes est une opération réalisée très souvent. Pour cela, l’administrateur pourra faire appel au mot-clé dédié : get. Cette instruction attend obligatoirement le type d’objet à consulter.
Dans le chapitre sur la mise en place de Minikube, vous avez récupéré la liste des espaces de noms existants (namespace).
Ci-dessous la commande qui a été lancée :
$ kubectl get namespace
Cette commande renvoie la sortie suivante :
NAME STATUS AGE
default Active 19h
kube-node-lease Active 19h
kube-public Active 19h
kube-system Active 19h
kubernetes-dashboard Active 19h
On y retrouve quatre espaces de noms (au minimum) :
-
default : espace de noms par défaut qui sera utilisé pour la création des objets dans Kubernetes.
-
kube-public : espace de noms publique contenant uniquement un objet de configuration (objectmap).
-
kube-system : espace de noms contenant les objets nécessaires au cycle...
Le moteur Containerd de Minikube
1. Initialisation de l’environnement
Dans le cas de Minikube, il est possible d’interroger le moteur Containerd utilisé par Kubernetes. Il faut pour cela se connecter au nœud à l’aide de l’instruction suivante :
$ minikube ssh
Le démon containerd peut être interrogé à l’aide de la commande ctr précédée par l’instruction sudo. Afin de récupérer la liste des espaces de noms, faites appel aux mots-clés namespacels :
$ sudo ctr namespace ls
Ci-dessous le résultat attendu :
NAME LABELS
k8s.io
Ici, l’espace de noms correspond à une activité liée à Kubernetes. Dans le cas où Docker aurait été utilisé comme moteur de container, l’espace de noms porterait la valeur moby.
Les espaces de noms dans Containerd ressemblent à ceux présentés précédemment. Attention toutefois, les deux concepts n’ont rien à voir : Kubernetes utilise son propre mécanisme en interne.
2. Les containers associés aux pods
En plus des espaces de noms, il est possible d’interroger la liste des containers dans Containerd.
Pour cela, utilisez la commande ctr avec les options suivantes :
-
L’instruction sudo afin de disposer des droits suffisants.
-
L’utilisation...