From eca28a8dc17860f677e06cf83f30a63ae3a1604c Mon Sep 17 00:00:00 2001 From: alkatrazz Date: Sat, 30 May 2026 23:07:32 +0200 Subject: [PATCH] docs(k8s): ajouter documentation k9s MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- admin/k8s/k9s.md | 207 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 admin/k8s/k9s.md diff --git a/admin/k8s/k9s.md b/admin/k8s/k9s.md new file mode 100644 index 0000000..0917890 --- /dev/null +++ b/admin/k8s/k9s.md @@ -0,0 +1,207 @@ +# 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) + +```bash +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 + +```bash +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`. + +```bash +# 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` : + +```yaml +k9s: + namespace: + active: all + favorites: + - all + view: + active: v1/pods all +``` + +### Lancer k9s sur storage-01 depuis le poste perso + +```bash +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 |