K9s est une interface terminal (TUI) pour Kubernetes développée par Fernand Galiana. Là où kubectl impose de taper des commandes longues pour chaque action, K9s transforme le terminal en cockpit interactif : navigation dans toutes les ressources du cluster, streaming de logs, exec dans un pod, port-forwarding, édition YAML live, tout s'effectue au clavier sans quitter l'interface. C'est l'outil de productivité de référence pour les équipes qui passent leur journée dans un terminal.
Informations essentielles
Origine : Fernand Galiana (derailed) · Licence : Apache 2.0 · Architectures : x86_64, ARM64
Liens : Site officiel · Documentation · GitHub · Releases
Support : Projet très actif, releases fréquentes.
Stack par défaut
| Composant | Valeur |
|---|---|
| Interface | TUI (terminal), navigation 100% clavier |
| Accès cluster | Via kubeconfig (tous clusters standards) |
| Métriques | CPU/mémoire en temps réel (via metrics-server) |
| Plugins | Extensible via fichier de configuration YAML |
| Skins | Thèmes visuels personnalisables |
Raccourcis essentiels
| Touche | Action |
|---|---|
: | Ouvrir le prompt de commande (:pod, :deploy, :svc…) |
/ | Filtrer les ressources (regex supporté) |
Enter | Entrer dans une ressource / voir les détails |
l | Logs du pod sélectionné |
s | Shell exec dans le container |
e | Éditer la ressource en YAML |
d | Describe (kubectl describe) |
Ctrl-d | Supprimer la ressource |
Ctrl-k | Tuer un pod (sans confirmation) |
f | Port-forward |
n | Changer de namespace |
? | Aide contextuelle |
Prérequis
| Ressource | Valeur |
|---|---|
| kubeconfig | Configuré (~/.kube/config ou KUBECONFIG) |
| OS | Linux, macOS, Windows |
| metrics-server | Optionnel - pour CPU/RAM en temps réel |
Installation
# Homebrew (macOS / Linux)
brew install derailed/k9s/k9s
# Linux - binaire direct
curl -Lo k9s.tar.gz \
https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz
tar -xzf k9s.tar.gz && sudo mv k9s /usr/local/bin/
# Arch Linux
pacman -S k9s
# Windows (Scoop)
scoop install k9s
k9s version
Lancer K9s
k9s # Contexte actif
k9s --context prod-cluster # Contexte spécifique
k9s --namespace production # Namespace de départ
k9s --readonly # Mode lecture seule (pas de modifications)
Configuration
# ~/.config/k9s/config.yaml
k9s:
refreshRate: 2
readOnly: false
ui:
skin: dracula
clusters:
prod-cluster:
namespace:
active: production
favorites: [production, kube-system]
view:
active: pod
Skins (thèmes)
mkdir -p ~/.config/k9s/skins
# Télécharger le skin dracula
curl -Lo ~/.config/k9s/skins/dracula.yaml \
https://raw.githubusercontent.com/derailed/k9s/master/skins/dracula.yaml
Plugins
# ~/.config/k9s/plugins.yaml
plugins:
# Lancer stern sur le pod sélectionné
stern:
shortCut: Shift-L
description: "Logs multi-pods avec Stern"
scopes: [pods]
command: stern
background: false
args: ["--tail", "100", "$NAME", "-n", "$NAMESPACE"]
Mise à jour
brew upgrade k9s
# Ou : retélécharger le binaire
curl -Lo k9s.tar.gz \
https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz
tar -xzf k9s.tar.gz && sudo mv k9s /usr/local/bin/
Troubleshooting
# Infos de configuration active (kubeconfig, version K8s…)
k9s info
# Activer les logs de debug
k9s --logLevel debug 2> /tmp/k9s.log
# Réinitialiser la config si l'interface est cassée
rm ~/.config/k9s/config.yaml
Commandes utiles
k9s # Lancer sur le contexte actif
k9s --context <nom> # Contexte spécifique
k9s --namespace <ns> # Namespace de départ
k9s --readonly # Mode lecture seule
k9s info # Configuration active
k9s version # Version installée
Ressources
- Site officiel : https://k9scli.io
- Documentation : https://k9scli.io/topics/
- Skins disponibles : https://github.com/derailed/k9s/tree/master/skins
- GitHub : https://github.com/derailed/k9s
- Releases : https://github.com/derailed/k9s/releases