Contextes et outils tiers Kubernetes
Objectifs du chapitre et prérequis
Kubernetes est un outil relativement complexe. Avant d’aller plus loin dans la mise en place de clusters, vous allez découvrir quelques outils intéressants à utiliser en cas de problème ou pour vous simplifier la vie.
En premier lieu, la notion de contextes sera abordée ainsi que la présentation d’outils pour les manipuler (kubectx, kubens, kube-ps1). Du temps sera également consacré à ajouter du contexte dans l’invite de l’utilisateur pour savoir rapidement sur quel cluster vous êtes en train de travailler.
Viendra ensuite une présentation de différents outils permettant de vous faciliter les choses, comme par exemple la surveillance de l’état des pods ou la capture du trafic réseau d’un container.
Gestion des contextes avec kubectl
1. Origine du besoin
Avant de tester des clusters Kubernetes de différentes origines, il est intéressant de comprendre comment est stockée l’information de connexion en local, ceci afin de :
-
pouvoir facilement passer d’un cluster à un autre,
-
stocker l’information quelque part (pour l’archiver, par exemple).
2. Lister les contextes
Au lancement de Minikube, le lecteur a créé un contexte par défaut : minikube.
Un bon moyen de s’en rendre compte est d’utiliser la commande kubectl suivie de l’option config et du mot-clé get-contexts :
$ kubectl config get-contexts
Dans le cas où vous auriez configuré un accès à minikube ainsi qu’un cluster créé chez Google, la sortie pourrait ressembler à ce qui suit :
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
gke-test gke-test gke-test
* minikube minikube minikube
Toujours avec l’option config, la sous-option current-context permet de récupérer le champ NAME du contexte par défaut :
$ kubectl config current-context
Dans le cas où minikube serait le contexte par défaut, la commande renverra le résultat suivant :
minikube
3. Variable d’environnement KUBECONFIG
a. Spécifier l’emplacement du fichier
La variable d’environnement KUBECONFIG permet de faire cohabiter plusieurs clusters. Cette dernière permet de spécifier un fichier différent de celui par défaut (~/.kube/config).
L’export de la variable d’environnement se fait de la manière suivante :
$ export KUBECONFIG=~/kubeconfig/cluster-prod
Consultez à nouveau les contextes vus par la commande kubectl :
$ kubectl config get-contexts
Les contextes sont différents de la fois précédente :
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* hp-a.ex.com hp-a.ex.com hp-a.ex.com
b. Spécifier plusieurs fichiers
À noter que la variable KUBECONFIG se comporte comme la variable...
Utilitaires Kubernetes
1. k9s : interface texte de suivi
a. Contexte
En cas de problème sur un déploiement, vous pouvez faire appel à la commande kubectl. Il faut ensuite passer les différentes options en fonction de ce que vous souhaitez consulter :
-
get pods pour obtenir l’état des pods.
-
describe pods suivi du nom du pod pour obtenir les événements rattachés.
-
logs suivi du nom du pod pour consulter les logs.
La commande k9s propose de guider l’utilisateur dans ces opérations à l’aide d’une interface texte rudimentaire mais très efficace.
Pour plus de détails, consultez l’adresse suivante : https://github.com/derailed/k9s
b. Installation de k9s
L’utilitaire k9s est disponible sous Arkade. Pour l’installer, lancez la commande suivante :
$ arkade get k9s
c. Lancement de k9s
Depuis un terminal, lancez k9s :
$ k9s
Par défaut, k9s se connectera automatiquement au cluster actif dans le contexte courant.
Écran d’accueil de k9s sur un cluster minikube
Depuis l’interface d’accueil, vous pouvez sélectionner un pod avec la touche [Entrée]. Vous pourrez alors consulter la liste des containers du pod et, en validant le container, accéder au journal d’activité du container.
Le retour en arrière se fait à l’aide de la touche [Echap].
Certains raccourcis permettent de lancer des actions :
-
lancement d’un shell avec la touche s,
-
suppression d’un pod avec la touche CTRL - d,
-
description d’un pod avec la touche d,
-
consultation de la log avec la touche l.
L’utilitaire permet également de consulter n’importe quels types d’objets dans le cluster. Pour cela, utilisez la touche deux-points (:) suivie du type d’objets à consulter (service, deployment, pvc, etc.). Afin de changer d’espace de noms, utilisez le type namespace (ou son raccourci ns) puis sélectionnez l’espace de noms à consulter. Appuyez alors sur la touche [Entrée].
À noter qu’il est également possible de consulter les charts Helm présents en entrant le type helm.
2. Kubespy : espionnage de l’activité
a. Présentation de Kubespy
Kubespy est un outil permettant de scruter l’activité d’une ressource dans Kubernetes suite...