K9s : gestion efficace de Kubernetes sans CLI
Mise à jour :
Administrer un cluster
Kubernetes en ligne de commande
peut vite devenir complexe avec kubectl
. K9s est un outil CLI interactif qui
facilite cette tâche en offrant une interface intuitive pour naviguer dans les
ressources en temps réel.
Pourquoi utiliser K9s pour gérer Kubernetes ?
K9s est un outil de type TUI permettant d’administrer un cluster
Kubernetes de manière interactive. Contrairement à kubectl
, qui nécessite
de saisir des commandes longues et précises, K9s offre une interface en mode
texte qui facilite la navigation et l’interaction avec les ressources
Kubernetes.
Développé en Go, il s’exécute directement dans le terminal et rafraîchit l’affichage en temps réel pour suivre l’état des pods, déploiements, services, et bien plus.
Si kubectl
est l’outil officiel pour interagir avec Kubernetes, il peut
devenir fastidieux à utiliser au quotidien. K9s simplifie cette interaction
grâce à :
- Une navigation fluide : ont peut explorer mon cluster sans taper de commandes répétitives.
- Des mises à jour en temps réel : les statuts des ressources s’actualisent automatiquement.
- Des raccourcis clavier puissants : pour accéder rapidement aux pods, logs, et détails des objets Kubernetes.
- Une gestion avancée des namespaces : on peut passer d’un namespace à un autre facilement.
- Une modification directe des ressources : on peut éditer les configurations sans sortir du terminal.
Cas d’utilisation de K9s :
On peut utiliser K9s dans de nombreux scénarios :
- Surveiller un cluster en production et voir en temps réel l’état des pods et des workloads.
- Déboguer des applications en accédant instantanément aux logs et événements des pods.
- Gérer plusieurs namespaces sans devoir ajouter
--namespace
à chaque commande. - Optimiser l’administration de Kubernetes avec un gain de temps significatif sur les opérations courantes.
En résumé, K9s est un atout majeur pour tout administrateur Kubernetes cherchant à optimiser son flux de travail et à améliorer la visibilité sur son cluster.
Installation de K9s
Avant de commencer à utiliser K9s, on doit m’assurer que mon environnement
est prêt. Cela implique d’avoir un cluster Kubernetes fonctionnel, un
minikube par exemple, ainsi que
l’outil kubectl
installé et configuré.
Je peux vérifier si kubectl
fonctionne correctement en exécutant :
kubectl get nodes
Si la commande retourne la liste des nœuds de mon cluster, on est prêt à installer K9s.
Installation sur Linux
Sur Linux, l’installation peut se faire via Homebrew, Snap ou en téléchargeant directement le binaire.
Avec Homebrew
brew install derailed/k9s/k9s
Avec Snap (Ubuntu/Debian)
sudo snap install k9s
Avec asdf
asdf plugin add k9sasdf install k9s latestasdf set --home k9s latest
Installation sur macOS
Sur macOS, Homebrew est la méthode la plus simple :
brew install derailed/k9s/k9s
Installation sur Windows
Avec Scoop (recommandé)
Si j’ai Scoop installé, on peut simplement exécuter :
scoop install k9s
Avec Chocolatey
Si j’utilise Chocolatey, j’exécute :
choco install k9s
Vérification de l’installation
Une fois l’installation terminée, on peut tester si K9s fonctionne en lançant :
k9s
Si tout est bien configuré, une interface en mode texte devrait s’afficher, affichant la liste des pods de votre cluster Kubernetes en temps réel.
📝 Astuce : Si j’obtiens une erreur, on vérifie que
kubectl
fonctionne bien et que mon cluster Kubernetes est accessible.
K9s est maintenant installé et prêt à être utilisé ! 🚀
Utilisation de K9s
Maintenant que k9s est installé, vous pouvez le lancer depuis votre terminal
avec la commande k9s. Si vous avez plusieurs fichiers config.yaml, vous indiquez
lequel utiliser grâce à l’option --kubeconfig ~/.kube/config.yaml
. Dans le cas
où plusieurs contextes existent, il vous demandera de choisir lequel utilisé.
Sinon k9s affichera par défaut la liste des pods du cluster dans le namespace
default
.
k9s
Lorsque vous quittez l’application, k9s
stocke les infos de namespace et de
types de ressources utilisées pour les réafficher lors de sa prochaine
utilisation.
k9s
possède d’autres options dont les plus importantes :
--refresh=n
pour modifier la tempo de refresh (par défaut 2s)--namespace=<namespace>
ou-n <namespace>
pour se rendre directement sur un namespace particulier.-c <view>
: accède directement à une vue. Par défaut po (pod), mais on peut utiliser : ns (namespace), ctx (context), pu (pulses) et pop (popeye).--readonly
Accès en lecture seul--all-namespaces
: affiche tous les namespaces
k9s info
: qui donne des infos sur la version et la localisation des
différents répertoires : logs, config et capture d’écran.
____ __ ________| |/ / __ \______| /\____ / ___/| \ \ / /\___ \|____|\__ \/____//____ / \/ \/
Version: v0.40.3Config: /home/bob/.config/k9s/config.yamlCustom Views: /home/bob/.config/k9s/views.yamlPlugins: /home/bob/.config/k9s/plugins.yamlHotkeys: /home/bob/.config/k9s/hotkeys.yamlAliases: /home/bob/.config/k9s/aliases.yamlSkins: /home/bob/.config/k9s/skinsContext Configs: /home/bob/.local/share/k9s/clustersLogs: /home/bob/.local/state/k9s/k9s.logBenchmarks: /home/bob/.local/state/k9s/benchmarksScreenDumps: /home/bob/.local/state/k9s/screen-dumps
Navigation
Lorsque vous lancez K9s, vous êtes accueilli par une vue par défaut qui affiche tous les pods dans le cluster actuellement sélectionné. Cette vue est le point de départ pour naviguer à travers les différentes ressources de votre cluster.
La conception de l’interface est centrée sur la simplicité et l’efficacité. En haut, vous trouverez une barre d’état qui affiche des informations essentielles comme le contexte Kubernetes actuel et le namespace. Au bas de l’écran, une ligne de commande vous permet d’entrer des commandes directement.
La navigation dans K9s est principalement basée sur des raccourcis clavier. Par exemple :
- Changer de ressource : Pour basculer entre différentes ressources
Kubernetes (comme les services, déploiements, etc.), vous pouvez utiliser les
touches
:
suivies du nom de la ressource. Par exemple,:svc
vous amènera à la liste des services. - Naviguer dans les listes : Utilisez les touches fléchées pour vous
déplacer dans les listes. La touche
Enter
permet de voir les détails d’un élément sélectionné. - Retour à l’écran précédent : La touche
Esc
vous ramène à l’affichage précédent.
Autres ressources :
:pods
→ Afficher les pods.:deployments
→ Afficher les deployments.:svc
→ Voir les services du cluster.:nodes
→ Visualiser l’état des nœuds.
Les autres vues :
:popeye
: Signale d’éventuels problèmes avec les ressources de votre cluster.:xray
: Affiche les dépendances entre ressource:pulse
: un tableau de bord affichant l’état de santé de votre cluster:rbac
: affiche les infosrbac
si elles sont activées.
Les touches de contrôles
K9s permet également d’exécuter des commandes directement depuis son
interface. Par exemple, pour obtenir des détails sur un pod spécifique,
sélectionnez-le dans la liste et appuyez sur d
. Une fenêtre s’ouvrira,
affichant des informations détaillées sur ce pod.
Pour obtenir de l’aide, il suffit d’appuyer sur la touche [?].
Description des touches :
- La touche [0] permet d’afficher les resources de tous les namespaces
- [1] celle du namespace default et d’autres raccourcis sont ajoutés au fur et à mesure que vous naviguez à travers les namespaces.
- En fonction de l’écran dans l’écran où vous vous trouvez les commandes disponibles s’afficheront. Par exemple dans la vue pod, [l] pour afficher les logs d’un pod, [d] pour afficher la description, [e] pour éditer une ressource, [s] pour exécuter un shell sur un pod
- [/] suivit d’une string ou d’une regex permet de filtrer les informations affichées
- [/] suivit -l
<label>
filtre par label - [/] suivit de -f
<filter>
fait du fuzzy find - [:] suivi du nom d’une vue : pulses, pod, popeye, xray
- Pour sortir d’un écran utilisez la touche [esc]
- Pour quitter [CTRL] + [C] ou [:]quit
Personnalisation de k9s
L’un des aspects les plus attrayants de K9s est sa capacité à être personnalisé selon les préférences de chaque utilisateur. Cette personnalisation améliore non seulement l’expérience utilisateur, mais permet également une interaction plus rapide et plus efficace avec vos clusters Kubernetes.
Pour personnaliser ces paramètres, vous devez modifier le fichier de
configuration de K9s. Ce fichier se trouve généralement dans votre
répertoire personnel sous .k9s/config.yml
.
Le fichier d’origine :
cat ~/.config/k9s/config.yamlk9s: liveViewAutoRefresh: false screenDumpDir: /home/bob/.local/state/k9s/screen-dumps refreshRate: 2 maxConnRetry: 5 readOnly: false noExitOnCtrlC: false ui: enableMouse: false headless: false logoless: false crumbsless: false noIcons: false skipLatestRevCheck: false disablePodCounting: false shellPod: image: busybox:1.35.0 namespace: default limits: cpu: 100m memory: 100Mi imageScans: enable: false exclusions: namespaces: [] labels: {} logger: tail: 100 buffer: 5000 sinceSeconds: -1 fullScreenLogs: false textWrap: false showTime: false thresholds: cpu: critical: 90 warn: 70 memory: critical: 90 warn: 70
K9s offre plusieurs options de personnalisation pour adapter son interface à vos besoins :
- Thèmes : K9s supporte plusieurs thèmes, vous permettant de changer l’apparence de l’interface. Vous pouvez choisir un thème par défaut ou en créer un personnalisé.
- Configuration des vues : Vous pouvez configurer les colonnes affichées pour chaque type de ressource Kubernetes. Cela vous permet de concentrer votre attention sur les informations les plus pertinentes pour votre travail.
- Raccourcis Claviers : Bien que K9s vienne avec un ensemble de raccourcis par défaut, vous pouvez les personnaliser pour mieux correspondre à vos habitudes de travail.
Changement de Thème
Si vous voulez créer un thème personnalisé, vous pouvez définir les couleurs
pour différents éléments de l’interface. Il faut créer un fichier dans le
répertoire ~/.config/k9s/skins
. Créons le fichier in-the-vay.yaml
avec ce
contenu :
# $XDG_CONFIG_HOME/k9s/in_the_navy_skin.yamlk9s: # General K9s styles body: fgColor: dodgerblue bgColor: '#ffffff' logoColor: '#0000ff'
# ClusterInfoView styles info: fgColor: lightskyblue sectionColor: steelblue
# Frame styles frame: # Borders styles border: fgColor: dodgerblue focusColor: aliceblue
# MenuView attributes and styles menu: fgColor: darkblue keyColor: cornflowerblue # Used for favorite namespaces numKeyColor: cadetblue
# CrumbView attributes for history navigation. crumbs: fgColor: white bgColor: steelblue activeColor: skyblue
# Resource status and update styles status: newColor: '#00ff00' modifyColor: powderblue addColor: lightskyblue errorColor: indianred highlightcolor: royalblue killColor: slategray completedColor: gray
# Border title styles. title: fgColor: aqua bgColor: white highlightColor: skyblue counterColor: slateblue filterColor: slategray # Specific views styles views: # TableView attributes. table: fgColor: blue bgColor: darkblue cursorColor: aqua # Header row styles. header: fgColor: white bgColor: darkblue sorterColor: orange
# YAML info styles. yaml: keyColor: steelblue colonColor: blue valueColor: royalblue
# Logs styles. logs: fgColor: white bgColor: black
Pour changer le thème, ouvrez le fichier config.yml
et modifiez la section
k9s.skin
.
Par exemple, pour utiliser le thème “dracula” :
k9s: ui: skin: name: in-the-navy
Dans le projet K9s, vous trouverez plusieurs thèmes prédéfinis ↗ et vous pouvez également créer le vôtre.
Les Raccourcis Claviers
Les raccourcis clavier sont essentiels pour naviguer rapidement dans K9s.
- Modification des raccourcis : Les raccourcis peuvent être modifiés en éditant le fichier de configuration de K9s. Vous pouvez relier des actions spécifiques à des touches différentes, en fonction de vos préférences.
Il faut créer un fichier ~/.config/k9s/hotkeys.yaml
:
# $XDG_DATA_HOME/k9s/hotkeys.yamlhotKeys:
# Hitting Shift-0 navigates to your pod view matching pods with labels app=kindnet shift-0: shortCut: Shift-0 description: Viewing pods command: pods app=kindnet
# Hitting Shift-1 navigates to your deployments shift-1: shortCut: Shift-1 description: View deployments command: dp
# Hitting Shift-2 navigates to your xray deployments shift-2: shortCut: Shift-2 description: XRay Deployments command: xray deploy
Définition de plugins
L’utilisation de plugins dans K9s enrichit considérablement votre expérience de gestion des clusters Kubernetes, en vous permettant d’étendre les fonctionnalités de base de l’outil. Voici comment installer et utiliser des plugins avec K9s.
Dans le répertoire ~/.config/k9s
créez un fichier plugins.yaml
:
plugins: dive: shortcut: d confirm: false description: "Dive image" scopes: - containers command: dive background: false args: - $COL-IMAGE
Ici on définit un plugin permettant d’utiliser l’outil dive.
Composants d’un Plugin
Un plugin K9s est composé des éléments suivants :
- shortcut : Il s’agit de la combinaison de touches utilisée pour activer
votre plugin dans K9s. Par exemple,
d
peut être un raccourci pour activer le plugin dive. - description : C’est un texte explicatif qui s’affiche à côté du raccourci dans le menu de K9s. Il décrit brièvement ce que fait le plugin.
- scopes : Ceci définit une collection de noms ou de noms courts de ressources associées à votre plugin. Par exemple, si votre plugin est conçu pour fonctionner avec des pods, vous définirez ‘pods’ dans les portées.
- command : Elle représente la commande exécutée par votre plugin lors de son activation. Cette commande peut être un script shell ou tout autre exécutable.
- background : Ce paramètre spécifie si la commande doit s’exécuter en arrière-plan ou non.
- args : Ce sont les différents arguments qui doivent être appliqués à la commande définie dans le champ Commande.
Variables d’Environnement Prédéfinies
Lors de la création de votre plugin, vous avez accès à certaines variables d’environnement prédéfinies que vous pouvez utiliser :
- $NAMESPACE : Le namespace de la ressource sélectionnée.
- $NAME : Le nom de la ressource sélectionnée.
- $CONTAINER : Le conteneur actuel, si applicable.
- $FILTER : Le filtre actuel, s’il y en a un.
- $KUBECONFIG : L’emplacement du KubeConfig.
- $CLUSTER : Le nom du cluster actif.
- $CONTEXT : Le nom du contexte actif.
- $USER : L’utilisateur actif.
- $GROUPS : Les groupes actifs.
- $POD : Utilisé lors de la vue d’un conteneur.
- $COL-<NOM_COLONNE_RESSOURCE> : Utilisez un nom de colonne donné pour une ressource visualisée. Doit être préfixé par COL-!
Conclusion
Créer un plugin pour K9s ouvre un monde de possibilités pour personnaliser et étendre les capacités de gestion de vos clusters Kubernetes. En utilisant ces composants et variables d’environnement, vous pouvez concevoir des plugins qui s’intègrent parfaitement avec votre workflow et répondent à des besoins spécifiques. Que vous souhaitiez simplifier des tâches répétitives, ajouter des fonctionnalités de surveillance, ou intégrer des outils externes, les plugins K9s offrent une solution flexible et puissante.
Conclusion
La personnalisation de K9s joue un rôle important dans l’optimisation de votre expérience de gestion des clusters Kubernetes. En adaptant l’interface et les raccourcis à vos besoins, vous pouvez améliorer significativement votre efficacité et votre confort d’utilisation. Dans le prochain et dernier chapitre, je partagerai des astuces et des bonnes pratiques pour maximiser les bénéfices de K9s dans votre travail quotidien.
Plus d’infos
-
Dépôt GitHub de K9s : Le dépôt GitHub offre un aperçu du projet, les dernières mises à jour et des instructions sur l’installation et la configuration. Vous pouvez le consulter à cette adresse : GitHub - derailed/k9s ↗.
-
Site Officiel de la Documentation K9s : Pour des informations plus détaillées sur l’installation, l’utilisation, la personnalisation, les raccourcis clavier, les plugins et plus encore, vous pouvez visiter le site officiel de la documentation de K9s : K9s Documentation ↗.