K9s: La CLI per Kubernetes che Dovresti Gia Usare
K9s e la CLI interattiva per Kubernetes che rende kubectl obsoleto per l'uso quotidiano. Setup, comandi, e workflow che ti cambiano la giornata.
Uso kubectl da anni. Lo conosco bene, so i comandi a memoria, ho alias per tutto. E poi ho scoperto k9s, e mi sono chiesto come ho fatto senza.
K9s e una TUI (text user interface) per Kubernetes. Gira nel terminale, ma ha un'interfaccia interattiva con navigazione, filtri, azioni rapide. Immagina un mix tra kubectl e Vim: potente, veloce, e una volta che impari le scorciatoie non torni indietro.
Perche Non Basta kubectl
kubectl e fantastico per scripting e automazione. Ma per uso interattivo ha dei limiti:
- Devi digitare comandi completi ogni volta
- Per vedere i log devi aprire un'altra finestra
- Passare tra risorse diverse richiede comandi separati
- Nessun auto-refresh — devi rilanciare per vedere cambiamenti
K9s risolve tutti questi problemi. Hai una vista live del cluster, navighi con i tasti, fai azioni con shortcut. E kubectl con steroidi per l'uso quotidiano.
Installazione
# macOS
brew install derailed/k9s/k9s
# Linux (via webi)
curl -sS https://webi.sh/k9s | sh
# Linux (da binario)
# Scarica da https://github.com/derailed/k9s/releases
# Arch
pacman -S k9s
# Windows (via scoop)
scoop install k9s
Lancia con:
k9s
Usa automaticamente il contesto corrente del tuo kubeconfig. Per cambiare contesto o namespace, lo fai direttamente da dentro k9s.
I Comandi Base
K9s e pensato per navigazione veloce. Questi sono i comandi che uso di piu.
Navigazione Risorse
Digita : seguito dal tipo di risorsa:
:podso:po— lista pod:deploy— deployments:svc— services:ns— namespaces:no— nodes:sec— secrets:cm— configmaps
Puoi usare le abbreviazioni standard di Kubernetes. Se conosci kubectl, conosci gia i nomi.
Filtri
Una volta in una vista, / apre il filtro. Scrivi qualcosa e vedi solo le risorse che matchano.
/nginx # mostra solo risorse con "nginx" nel nome
/app=web # filtra per label
/-n prod # solo namespace prod (se sei in All Namespaces)
Il filtro e live — i risultati si aggiornano mentre scrivi.
Azioni sui Pod
Con un pod selezionato:
l— log (live streaming)s— shell nel containerd— describey— mostra YAMLe— editctrl-d— deletep— port-forward
Queste scorciatoie funzionano su qualsiasi risorsa, dove applicabili.
Navigazione Generale
Enter— entra nella risorsa / mostra dettagliEsc— torna indietroctrl-a— mostra tutti i namespace:q— esci?— help
I Log: Dove K9s Brilla
La gestione dei log e dove k9s mi ha conquistato.
Seleziona un pod, premi l. I log appaiono in streaming, come kubectl logs -f ma meglio:
- Scroll con le frecce o Page Up/Down
/per cercare nel logwper wrap delle linee lunghetper toggle timestamp0per tornare alla fine (live)Escper uscire
Se il pod ha piu container, k9s ti chiede quale vuoi vedere. Puoi anche premere a per vedere tutti i container insieme, con prefisso per distinguerli.
Per log precedenti (container riavviato), premi p invece di l.
Port Forward Semplificato
Quante volte hai scritto kubectl port-forward svc/my-service 8080:80? Con k9s:
- Vai su
:svc - Seleziona il service
- Premi
shift-f - Scegli le porte
Il port-forward resta attivo in background. Vedi tutti i forward attivi con :pf.
Cambiare Contesto e Namespace
:ctx mostra tutti i contesti nel tuo kubeconfig. Seleziona e premi Enter per switchare.
:ns mostra i namespace. Seleziona per cambiare. Oppure usa ctrl-a per vedere tutte le risorse in tutti i namespace.
Personalizzazione
K9s e configurabile via file YAML. La config sta in ~/.config/k9s/ (o ~/.k9s su alcune piattaforme).
Skin Personalizzata
Puoi cambiare colori modificando ~/.config/k9s/skins/myskin.yaml:
k9s:
body:
fgColor: white
bgColor: black
frame:
border:
fgColor: dodgerblue
Attiva con:
# ~/.config/k9s/config.yaml
k9s:
ui:
skin: myskin
Alias Personalizzati
Definisci shortcut per risorse custom:
# ~/.config/k9s/aliases.yaml
aliases:
pp: v1/pods
dp: apps/v1/deployments
ing: networking.k8s.io/v1/ingresses
Ora :pp mostra i pod, :dp i deployment, etc.
Hotkeys
Puoi definire azioni custom:
# ~/.config/k9s/hotkeys.yaml
hotKeys:
shift-r:
shortCut: Shift-R
description: Rollout restart
command: kubectl rollout restart deploy $NAME -n $NAMESPACE
Questo aggiunge un'azione che fa rollout restart del deployment selezionato.
Plugin
K9s supporta plugin per azioni custom. Crea file in ~/.config/k9s/plugins/:
# ~/.config/k9s/plugins/stern.yaml
plugins:
stern:
shortCut: Shift-L
description: Stern logs
scopes:
- pods
command: stern
args:
- $NAME
- -n
- $NAMESPACE
Ora Shift-L su un pod lancia stern per i log. Puoi integrare qualsiasi tool CLI nel tuo workflow k9s.
Workflow Quotidiano
Ecco come uso k9s tipicamente.
Inizio giornata: Lancio k9s, :ctx per verificare di essere nel cluster giusto, :pods con ctrl-a per una vista generale. Qualche pod in rosso? Indago.
Debug di un problema: :pods, filtro per l'app problematica, l per i log. Se serve, s per una shell e indago direttamente nel container.
Deploy nuovo: Faccio apply da terminale, poi in k9s guardo i pod nuovi che spawnano. Vedo lo stato in real-time senza fare kubectl get pods -w.
Port-forward per test: :svc, seleziono, shift-f. Testo localmente. Quando finisco, :pf e cancello il forward.
Troubleshooting eventi: :events mostra gli eventi del cluster. Filtro per il namespace interessato, vedo cosa e successo.
K9s vs Lens vs kubectl
Tre strumenti, tre use case.
kubectl: Scripting, automazione, CI/CD. Quando devo mettere comandi in uno script, kubectl e l'unica opzione.
k9s: Uso interattivo quotidiano da terminale. Il mio strumento principale quando lavoro con Kubernetes. Veloce, potente, funziona ovunque ci sia un terminale.
Lens: Quando devo mostrare qualcosa a qualcun altro, o quando preferisco un'interfaccia grafica. Demo, pair programming, esplorazione di cluster nuovi.
In pratica, k9s copre l'80% del mio tempo con Kubernetes. Per il resto uso kubectl (automazione) o Lens (casi specifici).
Tips Avanzati
Qualche trucco che ho imparato nel tempo:
Benchmarking risorse: :pulses mostra grafici di utilizzo CPU/memoria in tempo reale. Utile per capire se un pod sta soffrendo.
XRay view: :xray deploy mostra una vista gerarchica deploy → replicaset → pod. Utile per capire la struttura.
YAML diff: Quando editi una risorsa con e, k9s ti mostra il diff prima di applicare. Comodo per evitare errori.
Popeye (sanitizer integrato): :popeye lancia un audit del cluster e mostra problemi potenziali. Non perfetto, ma da indicazioni utili.
Benchmark: Con b su un pod puoi vedere metriche HTTP se il container le espone. Utile per debug di performance.
Problemi Comuni
K9s non parte, errore di connessione: Verifica che kubectl funzioni. K9s usa lo stesso kubeconfig e contesto.
Non vedo tutte le risorse: Controlla i permessi RBAC. K9s mostra solo quello che hai permesso di vedere.
Performance lenta su cluster grandi: Usa filtri per limitare cosa viene fetchato. Evita ctrl-a su cluster con migliaia di risorse.
Colori sbagliati: Il tuo terminale potrebbe non supportare 256 colori. Prova una skin diversa o verifica le impostazioni del terminale.
Conclusione
K9s ha cambiato come lavoro con Kubernetes quotidianamente. Non e un sostituto di kubectl — per scripting serve ancora quello. Ma per tutto il lavoro interattivo, k9s e semplicemente migliore.
L'investimento iniziale e minimo: qualche minuto per installarlo, qualche ora per imparare i comandi base. Il ritorno e una produttivita significativamente maggiore ogni giorno che lavori con Kubernetes.
Se passi piu di mezz'ora al giorno su kubectl interattivo, fatti un favore e prova k9s. Una settimana e non tornerai indietro.
Il terminale non e morto. A volte e solo piu potente di un'interfaccia grafica.