Aller au contenu

K9s : gestion efficace de Kubernetes sans CLI

Mise à jour :

logo k9s

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 :

Terminal window
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

Terminal window
brew install derailed/k9s/k9s

Avec Snap (Ubuntu/Debian)

Terminal window
sudo snap install k9s

Avec asdf

Terminal window
asdf plugin add k9s
asdf install k9s latest
asdf set --home k9s latest

Installation sur macOS

Sur macOS, Homebrew est la méthode la plus simple :

Terminal window
brew install derailed/k9s/k9s

Installation sur Windows

Avec Scoop (recommandé)

Si j’ai Scoop installé, on peut simplement exécuter :

Terminal window
scoop install k9s

Avec Chocolatey

Si j’utilise Chocolatey, j’exécute :

Terminal window
choco install k9s

Vérification de l’installation

Une fois l’installation terminée, on peut tester si K9s fonctionne en lançant :

Terminal window
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.

Terminal window
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.

Terminal window
____ __ ________
| |/ / __ \______
| /\____ / ___/
| \ \ / /\___ \
|____|\__ \/____//____ /
\/ \/
Version: v0.40.3
Config: /home/bob/.config/k9s/config.yaml
Custom Views: /home/bob/.config/k9s/views.yaml
Plugins: /home/bob/.config/k9s/plugins.yaml
Hotkeys: /home/bob/.config/k9s/hotkeys.yaml
Aliases: /home/bob/.config/k9s/aliases.yaml
Skins: /home/bob/.config/k9s/skins
Context Configs: /home/bob/.local/share/k9s/clusters
Logs: /home/bob/.local/state/k9s/k9s.log
Benchmarks: /home/bob/.local/state/k9s/benchmarks
ScreenDumps: /home/bob/.local/state/k9s/screen-dumps

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.

interface k9s

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 infos rbac 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

k9s filtres

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.yaml
k9s:
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.yaml
k9s:
# 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.yaml
hotKeys:
# 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 :

Terminal window
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.