~/ blog / article

k9s : Gérez vos clusters Kubernetes like a boss

Outils · 7 min🤝 co-créé avec IA
Logo k9s à côté de l'icône Kubernetes sur fond sombre

Gérer un cluster Kubernetes avec kubectl peut vite devenir fastidieux.

k9s est un terminal UI qui révolutionne votre workflow DevOps !

TL;DR - L’essentiel en 30 secondes ⚡

Qu’est-ce que k9s ? Un terminal UI interactif pour Kubernetes - comme top ou htop mais pour vos clusters.

Installation rapide :

# macOS
brew install k9s

# Linux
curl -sS https://webinstall.dev/k9s | bash

# Windows
scoop install k9s

Commandes essentielles :

  • :pods → Lister les pods
  • :svc → Services
  • :deploy → Deployments
  • / → Rechercher
  • l → Logs
  • d → Describe
  • e → Edit
  • Ctrl+d → Supprimer

Pourquoi l’utiliser ? ✅ Navigation rapide au clavier ✅ Vue temps réel de votre cluster ✅ Logs et metrics intégrés ✅ Édition YAML directe ✅ Pulse pour surveiller les changements


Qu’est-ce que k9s ?

k9s est un terminal UI (Text User Interface) open-source qui transforme la gestion de Kubernetes en une expérience fluide et intuitive. Fini les longues commandes kubectl get pods -n namespace --watch !

Pourquoi k9s change la donne

  • Productivité x10 : Navigation au clavier, raccourcis vim-like
  • Visibilité totale : Vue d’ensemble de votre cluster en temps réel
  • Multi-contextes : Basculez entre clusters en un clin d’œil
  • Ressource-friendly : Plus léger que Lens ou K8s Dashboard
  • Open-source : Gratuit, actif (10k+ ⭐ sur GitHub)

Installation

macOS (Homebrew)

brew install derailed/k9s/k9s
# ou simplement
brew install k9s

Linux

Via webinstall :

curl -sS https://webinstall.dev/k9s | bash

Ubuntu/Debian :

# Télécharger la dernière release
VERSION=$(curl -s https://api.github.com/repos/derailed/k9s/releases/latest | grep tag_name | cut -d '"' -f 4)
wget https://github.com/derailed/k9s/releases/download/${VERSION}/k9s_Linux_amd64.tar.gz
tar -xzf k9s_Linux_amd64.tar.gz
sudo mv k9s /usr/local/bin/

Arch Linux :

yay -S k9s

Windows

Avec Scoop :

scoop install k9s

Avec Chocolatey :

choco install k9s

Vérifier l’installation

k9s version

Premier lancement

# Lancer k9s
k9s

# Avec un namespace spécifique
k9s -n production

# Avec un contexte particulier
k9s --context my-cluster

Commandes de base (comme vim)

ToucheAction
:Entrer une commande/ressource
/Rechercher/filtrer
EscRetour/Annuler
?Aide contextuelle
:qQuitter k9s
:pods       → Pods
:svc        → Services
:deploy     → Deployments
:ns         → Namespaces
:no         → Nodes
:pv         → Persistent Volumes
:pvc        → Persistent Volume Claims
:ing        → Ingress
:cm         → ConfigMaps
:sec        → Secrets
:sa         → Service Accounts
:ctx        → Contexts (changer de cluster)

Actions sur les ressources

ToucheAction
EnterVoir les détails
dDescribe (kubectl describe)
eEdit (ouvre l’éditeur)
lLogs (pour les pods)
sShell dans le pod
yCopier le YAML
Ctrl+dSupprimer
Ctrl+kKill pod
pVoir les pods précédents (logs)
ToucheAction
0-9Changer de namespace
Ctrl+aTous les namespaces
Shift+fPort-forward
Shift+tTrier
Ctrl+sSauvegarder
Ctrl+rRafraîchir

Fonctionnalités avancées

1. Pulse Mode - Surveiller les changements

Le mode Pulse vous alerte visuellement quand une ressource change :

# Dans k9s, appuyez sur :
Ctrl+p

Les ressources qui changent clignotent ! Parfait pour surveiller des déploiements.

2. Logs en temps réel

# Sélectionnez un pod et tapez :
l    # Voir les logs
Shift+l    # Logs avec timestamps

Fonctionnalités logs :

  • Auto-scroll
  • Recherche dans les logs (/)
  • Toggle wrap (w)
  • Filtrage par container (pour pods multi-conteneurs)

3. Port-Forwarding rapide

# Sur un service ou pod :
Shift+f

# Entrez le port local:distant
8080:80

4. Shell interactif

# Sur un pod, tapez :
s

# Choisissez le container si multi-conteneurs
# Vous êtes maintenant dans le pod !

5. Benchmark (hey integration)

k9s intègre hey pour tester la charge :

# Sur un service :
Ctrl+b

# Configure les paramètres de load testing

6. Xray - Visualiser les dépendances

# Sur un pod :
x

# Voir toutes les ressources liées
# (services, configmaps, secrets, etc.)

Configuration personnalisée

Fichier de config

k9s utilise ~/.config/k9s/config.yml :

# ~/.config/k9s/config.yml
k9s:
  # Rafraîchissement auto (secondes)
  refreshRate: 2

  # Nombre max de logs à afficher
  maxConnRetry: 5

  # Activer le mode mouse
  enableMouse: false

  # Thème
  ui:
    enableMouse: false
    headless: false
    logoless: false
    crumbsless: false
    noIcons: false
    skin: dracula

Thèmes (Skins)

k9s supporte plusieurs thèmes :

# Voir les thèmes disponibles
ls ~/.config/k9s/skins/

# Thèmes populaires : dracula, monokai, nord, tokyo-night

Installer un thème custom :

mkdir -p ~/.config/k9s/skins
# Télécharger un thème depuis https://github.com/derailed/k9s/tree/master/skins

Alias personnalisés

Créez ~/.config/k9s/aliases.yml :

aliases:
  dp: deployments
  po: pods
  svc: services
  ing: ingress
  sec: secrets
  pf: portforwards

Plugins

k9s supporte des plugins custom dans ~/.config/k9s/plugins.yml :

plugins:
  # Debug avec stern
  stern:
    shortCut: Ctrl+l
    description: Logs with stern
    scopes:
      - pods
    command: stern
    args:
      - --tail
      - 50
      - $NAME
      - -n
      - $NAMESPACE

  # Dive pour analyser les images
  dive:
    shortCut: d
    description: Dive image
    scopes:
      - containers
    command: dive
    args:
      - $COL-IMAGE

Cas d’usage pratiques

1. Déboguer un pod qui crash

k9s
:pods
/mon-app     # Rechercher
l            # Voir les logs
p            # Logs du pod précédent (si restart)
d            # Describe pour les events

2. Rollback rapide d’un deployment

k9s
:deploy
# Sélectionner le deployment
e            # Edit
# Changer l'image tag
# Sauvegarder et quitter

3. Surveiller les ressources d’un namespace

k9s -n production
:no          # Voir l'état des nodes
:pods        # Pods du namespace
Ctrl+p       # Activer Pulse mode

4. Port-forward pour accéder à une DB

k9s
:pods
/postgres
Shift+f
5432:5432
# Dans un autre terminal :
psql -h localhost -p 5432

Comparaison avec les alternatives

OutilTypeAvantagesInconvénients
k9sTerminal UILéger, rapide, keyboard-drivenCourbe d’apprentissage
LensDesktop AppGUI complète, graphiquesLourd (Electron)
kubectlCLIStandard, scriptableVerbeux, pas de monitoring
K8s DashboardWeb UIOfficiel, visuelNécessite installation
OctantWeb UIPlugins, modernePlus maintenu

Astuces et bonnes pratiques

1. Multi-clusters avec contextes

# Voir les contextes
:ctx

# Basculer rapidement
Entrer sur le contexte voulu

2. Filtrage avancé

# Filtrer par label
/app=nginx

# Filtrer par status
/Running

# Regex
/^prod-.*

3. Benchmark de performance

# Tester la charge d'un service
:svc
Ctrl+b
# Configurer : requests, concurrency, duration

4. Export de configurations

# Sur une ressource
y    # Copier le YAML
# Coller dans votre éditeur pour versioning

Ressources et liens utiles

Conclusion

k9s est devenu un outil indispensable dans ma toolbox DevOps. Une fois les raccourcis maîtrisés, impossible de revenir aux commandes kubectl classiques.

Points forts :

  • ⚡ Rapidité et fluidité
  • 🎯 Navigation intuitive
  • 🔍 Vue d’ensemble en temps réel
  • 🎨 Hautement personnalisable
  • 💰 Gratuit et open-source

À améliorer :

  • Courbe d’apprentissage initiale
  • Pas de graphiques (CPU/Memory)

Si vous gérez Kubernetes au quotidien, essayez k9s dès aujourd’hui. Vous ne pourrez plus vous en passer ! 🐶


Et vous, quels sont vos outils préférés pour gérer Kubernetes ? Partagez en commentaires !

co-créé avec IA

Cet article a été co-écrit avec l'aide d'une IA, puis relu et corrigé par un humain.

ma règle sur l'IA →

Tapez au moins 2 caractères.

télécharger ↓