K9s
K9s est une interface utilisateur en mode texte (TUI) pour Kubernetes. Elle est plus rapide que de cliquer dans un tableau de bord web et plus accessible que kubectl brut.
Quand l'utiliser
- Gestion de cluster Kubernetes en terminal : Interface curses interactive et rapide pour naviguer entre les pods, services et déploiements.
- Streaming de logs en temps réel et surveillance des ressources : Suivi des logs multi-pods, tri par CPU/mémoire et port forwarding.
- Plugins et alias personnalisés K9s : Extension de la CLI avec des commandes shell personnalisées (ex: exécution de stern, vérification de l'état de cert-manager).
- Inspection et dépannage en lecture seule : Débogage sécurisé des clusters de production avec des modes lecture seule.
Démarrage rapide
# Lancement de k9s avec le kubeconfig actif
k9s
# Raccourcis de navigation dans k9s :
# :pods - Voir tous les pods dans les namespaces
# :deploy - Voir les déploiements
# :svc - Voir les services
# /<terme> - Filtrer les éléments dans la vue active
# l - Streamer les logs du pod sélectionné
# s - Ouvrir un shell (exec) dans le conteneur sélectionné
Concepts clés
#Configuration des plugins personnalisés (plugins.yaml)
Ajout de commandes clavier personnalisées pour un débogage rapide :
# ~/.config/k9s/plugins.yaml
plugin:
# Appuyez sur 'Shift-D' sur un déploiement pour voir l'historique détaillé du rollout
rollout-history:
shortCut: Shift-D
confirm: false
description: "Rollout History"
scopes:
- deployments
command: kubectl
background: false
args:
- rollout
- history
- deployment/$NAME
- -n
- $NAMESPACE
# Appuyez sur 'Shift-F' sur un pod pour lancer un conteneur de débogage interactif
debug-pod:
shortCut: Shift-F
confirm: true
description: "Debug Pod"
scopes:
- pods
command: kubectl
background: false
args:
- debug
- -it
- $NAME
- --image=nicolaka/netshoot
- -n
- $NAMESPACE
#Raccourcis essentiels de navigation et de clavier
Accélérer la gestion du cluster :
:pod: Accéder à la vue des Pods dans les namespaces.:svc,:deploy,:ing: Accéder aux Services, Déploiements et Ingresses./: Rechercher et filtrer les ressources par nom ou statut.l: Suivre les logs du pod ou conteneur sélectionné.s: Ouvrir un shell interactif (sh/bash) dans le conteneur sélectionné.Shift-F: Transférer le port local vers le port du service du pod sélectionné.y: Voir le manifest YAML complet de la ressource sélectionnée.
#Lancement de K9s avec des options personnalisées
Lancement de K9s en mode sécurisé :
# Lancement en mode lecture seule pour éviter la suppression accidentelle de pods en production
k9s --readonly --namespace production
# Spécifier un contexte et un taux de rafraîchissement personnalisés
k9s --context prod-eks-cluster --refresh 2
Schémas courants
#Raccourcis et plugins K9s personnalisés
Problème : Exécution fréquente de commandes kubectl personnalisées sur différents namespaces.
Solution : Définir des plugins personnalisés dans ~/.config/k9s/plugin.yaml.
# ~/.config/k9s/plugin.yaml
plugin:
raw-logs:
shortCut: Shift-L
description: "Tail logs without truncation"
scopes:
- pods
command: kubectl
background: false
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
Bonnes pratiques (2026)
- À faire : Utilisez
k9s --readonlylors de la connexion aux environnements de production pour éviter les suppressions accidentelles. - À faire : Configurez des plugins personnalisés dans
~/.config/k9s/plugins.yamlpour les commandeskubectlrépétitives. - À faire : Utilisez le raccourci de port forwarding (
Shift-F) plutôt que de taper de longues commandeskubectl port-forward. - À faire : Filtrez les vues en utilisant
<all>namespaces ou des namespaces spécifiques pour réduire les requêtes vers le serveur API. - À ne pas faire : Laissez des dizaines de port forwards actifs ouverts ; gérez-les et terminez-les dans la vue
:portforwards. - À ne pas faire : Exécutez K9s sur de grands clusters d'entreprise sans définir des intervalles de rafraîchissement (
--refresh) appropriés. - À ne pas faire : Supprimez les revendications de volume persistant (PVC) via K9s sans vérifier les sauvegardes.
Dépannage
| Erreur | Cause | Solution |
|---|---|---|
Boom!! K9s cannot connect to cluster | Contexte kubeconfig actif invalide ou point de terminaison du cluster inaccessible. | Vérifiez la connexion : kubectl cluster-info et changez de contexte avec kubectl config use-context. |
Pod logs failing to stream in k9s | Le conteneur du pod a planté ou l'utilisateur n'a pas la permission RBAC pods/log. | Vérifiez l'état du conteneur et les permissions du rôle du cluster. |
Terminal display corrupted / artifacts | Terminfo du terminal incompatible ou fenêtre de terminal trop petite. | Exécutez export TERM=xterm-256color et agrandissez la fenêtre du terminal. |