Funk-lab/admin/k8s/k9s.md
alkatrazz eca28a8dc1 docs(k8s): ajouter documentation k9s
Installation poste perso + storage-01, configuration namespace par défaut,
raccourcis navigation, cas d'usage fréquents, dépannage.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 23:07:32 +02:00

5.4 KiB

k9s — TUI Kubernetes

k9s est une interface terminal interactive pour administrer le cluster Kubernetes. Il remplace la plupart des commandes kubectl get/describe/logs/exec par une navigation clavier.


Installation

Poste perso et storage-01 (v0.50.18)

curl -Lo /tmp/k9s.tar.gz \
  https://github.com/derailed/k9s/releases/download/v0.50.18/k9s_Linux_amd64.tar.gz
tar -xzf /tmp/k9s.tar.gz -C /tmp k9s
sudo mv /tmp/k9s /usr/local/bin/k9s
sudo chmod +x /usr/local/bin/k9s
k9s version

Pour une version plus récente : https://github.com/derailed/k9s/releases/latest

Sur storage-01 depuis le poste perso

ssh storage-01 "curl -sLo /tmp/k9s.tar.gz \
  https://github.com/derailed/k9s/releases/download/v0.50.18/k9s_Linux_amd64.tar.gz && \
  tar -xzf /tmp/k9s.tar.gz -C /tmp k9s && \
  sudo mv /tmp/k9s /usr/local/bin/k9s && \
  sudo chmod +x /usr/local/bin/k9s"

Configuration

Kubeconfig

k9s lit ~/.kube/config — le même que kubectl. Le kubeconfig Funk est généré depuis talhelper et pointe sur https://192.168.10.11:6443.

# Vérifier le contexte actif
kubectl config get-contexts

# Contexte attendu : admin@funk

Forcer tous les namespaces par défaut

k9s mémorise le namespace par contexte dans ~/.local/share/k9s/clusters/funk/admin@funk/config.yaml. Après le premier lancement, corriger ce fichier pour éviter de toujours démarrer sur default :

k9s:
  namespace:
    active: all
    favorites:
      - all
  view:
    active: v1/pods all

Lancer k9s sur storage-01 depuis le poste perso

ssh -t storage-01 k9s   # -t obligatoire pour allouer un TTY (TUI)

Namespaces du cluster Funk

Namespace Contenu
monitoring Prometheus, Grafana, AlertManager
ai Open WebUI, n8n
infra Traefik, MetalLB, NFS provisioner
argocd ArgoCD (GitOps)
kube-system Composants Kubernetes internes

Navigation — raccourcis essentiels

Général

Touche Action
0 Tous les namespaces
1, 2... Namespace favori N
: Ouvrir la ligne de commande (changer de ressource)
/ Filtrer la liste (regex supporté)
Esc Retour / annuler
? Aide complète (tous les raccourcis)
ctrl+c Quitter k9s

Ressources courantes (taper : puis le nom)

Commande Ressource affichée
:pod Pods
:deploy Deployments
:svc Services
:ing Ingress
:pvc PersistentVolumeClaims
:ns Namespaces
:node Nœuds du cluster
:secret Secrets
:cm ConfigMaps
:event Events (utile pour debug)
:cj CronJobs
:job Jobs

Actions sur une ressource sélectionnée

Touche Action
Entrée Descendre dans la ressource (pod → containers)
l Logs du pod/container
d Describe (équivalent kubectl describe)
e Éditer le YAML en live
y Afficher le YAML complet
s Shell interactif dans le container (exec -it)
ctrl+d Supprimer la ressource
ctrl+k Kill (suppression forcée)
r Restart le déploiement (rollout restart)

Logs

Touche Action
l Logs du container sélectionné
ctrl+s Sauvegarder les logs dans un fichier
w Activer/désactiver le retour à la ligne
t Afficher/masquer les timestamps
0 Charger tous les logs (pas seulement les 100 dernières lignes)

Cas d'usage fréquents

Voir l'état des pods en direct

Lancer k9s → appuyer sur 0 → vue de tous les pods avec état en temps réel. Les pods CrashLoopBackOff ou Pending apparaissent en rouge.

Lire les logs d'un pod

:pod → sélectionner le pod → l

Pour suivre les logs en continu : ils se rafraîchissent automatiquement.

Débugger un pod en erreur

:pod → sélectionner le pod → d   (describe — voir Events en bas)
:event → filtrer par nom du pod  (voir la raison du crash)

Redémarrer un déploiement

:deploy → sélectionner → r

Exécuter un shell dans un pod

:pod → sélectionner → s → choisir le container

Voir la consommation CPU/RAM des nœuds

:node → les colonnes CPU% et MEM% sont affichées en temps réel

Surveiller les PVC (stockage NFS)

:pvc → vérifier que tous sont Bound (sinon : Pending = problème NFS provisioner)

Dépannage

Symptôme Cause Action
"No resources found in default namespace" k9s démarre sur le mauvais namespace Appuyer sur 0 ou corriger ~/.local/share/k9s/clusters/funk/admin@funk/config.yaml
Pas de connexion au cluster kubeconfig absent ou cluster éteint kubectl get nodes pour diagnostiquer ; funk-start si le cluster est éteint
Shell (s) ne fonctionne pas Pod sans shell ou image distroless Utiliser kubectl debug à la place
k9s freeze sur storage-01 Pas de TTY alloué Toujours lancer avec ssh -t storage-01 k9s

Fichiers de configuration

Fichier Rôle
~/.kube/config Kubeconfig — adresse cluster + certificats
~/.config/k9s/config.yaml Config globale k9s (refresh rate, seuils CPU/RAM...)
~/.config/k9s/aliases.yaml Alias de ressources personnalisés
~/.local/share/k9s/clusters/funk/admin@funk/config.yaml Namespace et vue actifs par contexte