← Index
Kubernetes · Terminal UI

k9s

Naviguer dans le cluster au clavier. Presque tout se fait avec :cmd et deux-trois touches — souris inutile.

VERSION · v0.32+
CONFIG · ~/.config/k9s/
DOCS · k9scli.io

Navigation 01

Déplacement dans les vues et les listes.

↑ · ↓ligne précédente / suivante
k · jidem (vim-style)
Ctrl-b · Ctrl-fpage ↑ / ↓
g · Ghaut · bas de la liste
Enterentrer / drill-down
Escrevenir en arrière
Ctrl-aalias disponibles
?aide contextuelle
Ctrl-c · :qquitter k9s

Command mode 02

Taper : pour basculer vers une ressource.

:poliste des pods
:deploydeployments
:svcservices
:nsnamespaces
:ctxchanger de contexte
:nonodes
:ingingresses
:cm · :secconfigmaps · secrets
:pv · :pvcvolumes
:job · :cjjobs · cronjobs
:sts · :dsstatefulsets · daemonsets
:crdcustom resources
:evevents (triés)

Filtres · Recherche 03

Filtrer la vue courante.

/<texte>filtrer par nom
/-l app=webfiltre par label
/!<texte>négation (exclusion)
/<regex>regex (ex. ^web-.*)
/-f fuzzyfuzzy match
Esceffacer le filtre
0 · 1..90 = tous les ns · 1-9 favoris

Install · Launch 04

Lancer k9s avec options utiles.

k9sdémarrage simple
k9s -n <ns>namespace précis
k9s -Atous les namespaces
k9s --context <ctx>contexte précis
k9s -c podvue initiale
k9s --readonlylecture seule
k9s --headlesssans en-tête (plus d'espace)
k9s --logolesssans logo
k9s --crumbslesssans breadcrumbs
k9s infochemins de config

Actions sur pod 05

Sélectionner une ligne puis taper la touche.

ddescribe
yYAML
llogs (du conteneur sélectionné)
plogs précédents (crash)
sshell (sh/bash dans le pod)
eedit (ouvre $EDITOR)
Shift-fport-forward
Ctrl-kkill (suppression immédiate)
Ctrl-ddelete (avec confirmation)
zsanitize (lint du namespace)
wshow labels toggle
Ctrl-ssauvegarder la vue (YAML)
oouvrir les owners (stack)

Logs · Live 06

Depuis la vue logs (après l).

ftoggle full screen
wtoggle wrap
ttoggle timestamps
aall containers
ssave logs sur disque
0 · 1 · 2tail 0 / 1m / 5m · 15m
3 · 430m · 1h
5illimité
Ctrl-smark · ancrer
/<texte>filtrer les logs
Escretour

Rollout · Scale 07

Sur un deployment ou statefulset.

sscale (choisir replicas)
rrestart rollout
llogs (pods gérés)
Shift-rrollback
Shift-jjump to referenced
Shift-ppulses (métriques)

Pulses · XRay · Popeye 08

Vues analytiques et audit.

:pulsesdashboard live du cluster
:xray <res>arbre de dépendances
:xray poxray des pods (owners, PV, SA…)
:popeyelint / audit du cluster
:sanitizealias de popeye
:benchmarkhistorique des benchmarks
:helmreleases Helm
:dir <path>manifests locaux (filesystem)

Contexte · Namespace 09

Naviguer entre clusters et ns.

:ctxlister · changer de contexte
:ctx <nom>bascule directe
:nslister les namespaces
uuse (depuis la vue :ns)
0all namespaces
1..9namespace favori (slot)
Shift-<N>enregistrer un favori

Sélection multiple · Marks 10

Agir sur plusieurs lignes à la fois.

Spacemarquer la ligne
Ctrl-Spacedémarquer tout
Shift-stri sur la colonne courante
,colonne précédente
.colonne suivante
Ctrl-<n>switch de vue (multi-cluster)

Command aliases 11

Utiles pour passer d'une vue à l'autre.

:popods
:deploydeployments
:svcservices
:ingingresses
:stsstatefulsets
:dsdaemonsets
:rsreplicasets
:job · :cjjobs · cronjobs
:cm · :secconfigmaps · secrets
:pv · :pvcstorage
:nonodes
:nsnamespaces
:evevents
:hpaautoscalers
:netpolnetwork policies
:saservice accounts
:rb · :crbrole bindings
:pulsesdashboard live
:xrayarbre de dépendances
:popeyeaudit cluster

Config · Alias 12

Alias perso dans ~/.config/k9s/aliases.yaml.

# ~/.config/k9s/aliases.yaml
alias:
  pp: v1/pods
  dp: apps/v1/deployments
  crb: rbac.authorization.k8s.io/v1/clusterrolebindings
  sec: v1/secrets
  ing: networking.k8s.io/v1/ingresses

# Lancement direct sur une vue

k9s -c pp           # pods
k9s -c dp -n prod   # deploys @ prod
k9s -c pulses

Skin · Thème 13

~/.config/k9s/skins/<nom>.yaml puis référencer dans la config.

# config.yaml
k9s:
  ui:
    skin: dracula
    enableMouse: false
    headless: false
    logoless: false
    crumbsless: false
    noIcons: false
  refreshRate: 2
  maxConnRetry: 5
  readOnly: false

Plugins 14

~/.config/k9s/plugins.yaml — touche custom qui exécute un shell.

# exemple : dump YAML d'un pod
plugins:
  dumpYaml:
    shortCut: Shift-Y
    description: Dump YAML
    scopes: [po]
    command: sh
    background: false
    args:
      - -c
      - "kubectl get po $NAME -n $NAMESPACE -o yaml | less"

# Variables dispo dans args

$NAME       # ressource sélectionnée
$NAMESPACE  # ns courant
$CONTEXT    # contexte kube
$CLUSTER    # cluster
$RESOURCE_NAME

Troubleshooting 15

Récap des gestes qui sauvent.

:evevents triés (cause racine)
:popeyelint du cluster
Shift-p + populses CPU/RAM du pod
p sur podlogs du conteneur précédent
:xray povoir tout ce qui pointe sur le pod
Shift-fport-forward d'urgence
zsanitize du ns