K9s - Terminal UI voor Kubernetes
Introductie
K9s is een krachtige terminal-based gebruikersinterface voor het efficiënt beheren en monitoren van Kubernetes clusters. Deze professionele tool stelt DevOps engineers en ontwikkelaars in staat om snel door hun Kubernetes-resources te navigeren, operationele vraagstukken op te lossen, en realtimemonitoring uit te voeren zonder complexe kubectl commando's te hoeven onthouden.

Hoofdvoordelen
- Efficiënte navigatie: Snelle toegang tot alle Kubernetes resources
- Real-time monitoring: Live updates van resource status en metrics
- Contextbewustzijn: Eenvoudig schakelen tussen clusters en namespaces
- Ingebouwde resource acties: Direct uitvoeren van operaties op resources
- Keyboard-driven: Volledige functionaliteit beschikbaar via toetsenbord shortcuts
Vim Navigatie
K9s implementeert Vim-geïnspireerde toetsenbordcommando's voor efficiënte navigatie. De belangrijkste navigatiecommando's zijn:
| Commando | Actie |
|---|---|
j |
Navigeer één regel omlaag |
k |
Navigeer één regel omhoog |
gg |
Navigeer naar het begin van de lijst |
G |
Navigeer naar het einde van de lijst |
/ |
Activeer zoekfunctionaliteit |
n / N |
Navigeer naar volgende/vorige zoekresultaat |
ctrl-u |
Scroll een half scherm omhoog |
ctrl-d |
Scroll een half scherm omlaag |
ctrl-b |
Scroll een volledig scherm omhoog |
ctrl-f |
Scroll een volledig scherm omlaag |
h / l |
Bij tabellen: navigeer naar links/rechts |
Tip: Voor meer informatie over Vim-navigatie en de complete set van commando's, raadpleeg de Vim Basics documentatie.
Installatieprocedure
K9s is beschikbaar voor verschillende platforms en kan op meerdere manieren geïnstalleerd worden:
MacOS
# MacOS (met Homebrew)
brew install k9s
# Verificatie van installatie
k9s version
Linux
# Met snap
sudo snap install k9s
# Met Linuxbrew
brew install k9s
# Handmatig (via release binary)
wget https://github.com/derailed/k9s/releases/download/v0.27.4/k9s_Linux_amd64.tar.gz
tar -xzf k9s_Linux_amd64.tar.gz
sudo mv k9s /usr/local/bin/
Windows
# Met Chocolatey
choco install k9s
# Met scoop
scoop install k9s
Configuratie
K9s kan worden aangepast aan persoonlijke voorkeuren via een configuratiebestand:
# Configuratielocatie
~/.config/k9s/config.yml
Voorbeeld van een configuratiebestand:
# ~/.config/k9s/config.yml
k9s:
refreshRate: 2 # Refresh interval in seconden
maxConnRetry: 5 # Maximale aantal verbinding retries
enableMouse: true # Muis ondersteuning activeren
headless: false # Headless modus (zonder UI)
logoless: false # Logo verbergen
crumbsless: false # Navigatie-kruimels verbergen
readOnly: false # Read-only modus
noExitOnCtrlC: false # Voorkom afsluiten met Ctrl-C
ui:
skin: dracula # UI thema (dracula, monokai, ...)
enableHeader: true # Header weergeven
Basis Gebruik
Starten
# Start K9s in huidige context
k9s
# Start in specifieke namespace
k9s -n mijn-namespace
k9s --namespace mijn-namespace
# Start met specifieke resource view
k9s -c pods
k9s --command pods
# Start in read-only mode (veilig voor productie)
k9s --readonly
# Start met specifiek kubeconfig bestand
k9s --kubeconfig ~/.kube/andere-config
Interface Overzicht
De K9s interface bestaat uit verschillende componenten:
- Header: Toont huidige context, namespace, en filter
- Command prompt: Voor het invoeren van commands (
:) - Resource view: Hoofdgebied met geselecteerde resources
- Footer: Toont beschikbare toetsenbord commands
- Crumbs: Navigatie-breadcrumbs bovenaan het scherm
Navigatie en Commands
Algemene Shortcuts
| Actie | Command | Beschrijving |
|---|---|---|
| Help menu | ? |
Toon alle beschikbare commands |
| Command mode | : |
Activeer command mode voor het invoeren van commands |
| Resource overzicht | ctrl-a |
Toon alle beschikbare resources |
| Afsluiten | :q of ctrl-c |
Sluit K9s af |
| Filter resources | /filter |
Filter op naam (ondersteunt regex) |
| Inverse filter | /!filter |
Toon alles behalve filter match |
| Label filter | /-l label=value |
Filter op Kubernetes labels |
| Fuzzy filter | /-f search |
Fuzzy search door resources |
| Namespace wijzigen | :ns [namespace] |
Wissel naar andere namespace |
| Context wijzigen | `:ctx [context] | Wissel naar andere cluster context |
| Escape uit modus | <esc> |
Ga terug naar normale modus |
| Refresh view | ctrl-r |
Forceer refresh van huidige view |
Resource Navigatie
De command mode (geactiveerd met :) biedt toegang tot verschillende resources:
# Bekijk pods (gebruik :pod of :pods)
:pod⏎
# Bekijk pods in specifieke namespace
:pod mijn-namespace⏎
# Filter pods op naam
:pod /nginx⏎
# Filter op labels
:pod -l app=nginx,env=prod⏎
# Bekijk resources in andere context
:pod @prod-context⏎
Veelgebruikte Resource Commands
| Resource Command | Beschrijving |
|---|---|
:po, :pod |
Pods |
:dp, :deploy |
Deployments |
:svc |
Services |
:ing |
Ingresses |
:cm |
ConfigMaps |
:sec |
Secrets |
:no |
Nodes |
:ns |
Namespaces |
:pv |
PersistentVolumes |
:pvc |
PersistentVolumeClaims |
:ev |
Events |
:ctx |
Contexts |
Resource Management Acties
Eenmaal in een resource view, zijn er verschillende acties beschikbaar per resource:
| Actie | Command | Beschrijving |
|---|---|---|
| Resource informatie | d |
Toont gedetailleerde resource informatie (describe) |
| Resource bewerking | e |
Opent resource in configuratie-editor (YAML) |
| Log weergave | l |
Toont container logbestanden |
| Shell toegang | s |
Initialiseert shell-sessie in container |
| Port forward | shift-f |
Setup port forwarding naar service/pod |
| Resource verwijdering | ctrl-d |
Verwijdert resource (met bevestiging) |
| Geforceerde verwijdering | ctrl-k |
Verwijdert resource zonder bevestiging |
| YAML weergave | y |
Toont resource YAML definitie |
| Gebruik | u |
Toont resource usage metrics |
| Volg resource | f |
Volgt resource updates (bijv. logs) |
| Copy naam | c |
Kopieert resource naam naar clipboard |
Voorbeeld van Pod Acties Workflow:
- Open pod view:
:pod⏎ - Vind specifieke pod:
/nginx⏎ - Bekijk logs:
l - Kies container (indien meerdere): selecteer met pijltjestoetsen
- Volg logs real-time:
f - Exit log view:
Esc - Open shell:
s - Exit shell:
exit⏎ofctrl-d
Geavanceerde Functies
1. Port Forwarding
Port forwarding maakt lokale toegang tot services mogelijk:
# 1. Navigeer naar services of pods
:svc⏎ of :pod⏎
# 2. Selecteer service of pod
/naam-van-service⏎
# 3. Setup port forwarding
shift-f
# 4. Specificeer lokale en remote poort
8080:80⏎
2. Resource Editing
YAML editing voor real-time resource aanpassingen:
# 1. Selecteer resource
:deploy⏎
# 2. Zoek deployment
/app-deployment⏎
# 3. Open editor
e
# 4. Wijzig YAML
# - Gebruik vim commando's voor navigatie en editing
# 5. Opslaan en afsluiten
:wq⏎
3. Multi-resource Views
Pulses en XRay bieden uitgebreide monitoring views:
# Resource usage overview
:pulses⏎
# Hiërarchische view van deployments, replicasets en pods
:xray deploy⏎
# Hiërarchische view van namespaces en resources
:xray ns⏎
Troubleshooting met K9s
1. Pod Problemen Oplossen
# 1. Navigeer naar pods
:pod⏎
# 2. Zoek problematische pod
/naam-van-pod⏎
# 3. Bekijk logs
l
# Nuttige opties in log view:
# - f: Toggle auto-follow logs
# - w: Toggle wrapping van log regels
# - s: Toggle timestamps
# - p: Toggle vorige container (indien crashed)
# - i: Voer grep filter in voor logs
# - Esc: Sluit log view
# 4. Bekijk details (equivalent aan kubectl describe)
d
# 5. Shell toegang voor debugging
s
# 6. Event debugging
:ev⏎
/pod-naam⏎ # Filter op pod naam
2. Resource Gebruik Monitoren
# Bekijk CPU/Memory gebruik
:pulses⏎
# Sorteer op CPU/Memory (in pulses view)
% # Sorteer op CPU
$ # Sorteer op Memory
# XRay view voor diepere analyse
:xray deploy⏎
:xray pod⏎
3. Service Debugging
# 1. Bekijk services
:svc⏎
# 2. Zoek service
/service-naam⏎
# 3. Bekijk endpoints
:ep⏎
# 4. Test service toegang via port-forward
shift-f # Op de service
8080:80⏎ # Local:remote poorten
# In een andere terminal:
curl localhost:8080
4. Deployment Debugging
# 1. Bekijk deployments
:deploy⏎
# 2. Zoek deployment
/deployment-naam⏎
# 3. Bekijk details
d
# 4. Bekijk gerelateerde resources
shift-r # Toont menu met gerelateerde resources
# 5. Bekijk container logs
l # Van deployment view (toont logs van alle pods)
# 6. Schaal deployment
s # Toont scaling dialoog
5⏎ # Schaal naar 5 replicas
Best Practices
1. Efficiënt Dagelijks Beheer
- Gebruik namespaces voor context-based werken:
:ns namespace-naam⏎ - Implementeer
port-forward(shift-f) voor directe servicetoegang - Gebruik labels voor effectief filteren:
/-l app=nginx,env=prod - Benut fuzzy search (
/-f) voor snel zoeken - Stel custom resource aliases in voor veelgebruikte resources
- Werk met meerdere K9s instances voor verschillende contexten/namespaces
- Gebruik read-only mode (
--readonly) voor productieomgevingen
2. Effectieve Monitoring
- Gebruik de pulses view voor real-time resource monitoring
- Bekijk logs van meerdere pods tegelijk met log volgen
- Combineer label filters met pod status voor probleemdiagnose
- Setup port-forward voor toegang tot metrics endpoints
- Gebruik container resource usage (
u) voor performance monitoring - Monitor events (
ev) voor systeem-level activiteiten - Implementeer XRay views voor hiërarchische resource visualisatie
3. Troubleshooting Strategie
- Start met pod logs voor eerste diagnose
- Gebruik describe (
d) voor gedetailleerde status informatie - Check events (
ev) voor recente problemen in de cluster - Gebruik shell access (
s) voor directe debugging in containers - Controleer resource usage trends met pulses
- Identificeer cascading failures met XRay views
- Verifieer netwerk connectivity met port-forwards
Tips voor Dagelijks Gebruik
Context en Namespace Management
Snel schakelen tussen clusters en namespaces:
# Switch context (cluster)
:ctx⏎
# Direct naar context (cluster)
:ctx prod-cluster⏎
# Switch namespace
:ns⏎
# Direct naar namespace
:ns kube-system⏎
# Aanmaken namespace
:ns -c nieuwe-namespace⏎
Keyboard Shortcuts Customization
Pas K9s shortcuts aan in het configuratiebestand:
# ~/.config/k9s/config.yml
k9s:
shortcuts:
# Custom keyboard shortcuts
quit: 'q' # Default is :q or ctrl-c
forward: 'pf' # Default is shift-f
Resource Monitoring
# Monitor resource gebruik
:pulses⏎
# Bekijk pod metrics
:xray pod⏎
# Volg logs van deployment
:dp⏎
l (op deployment)
Bulk Operaties
Voor efficiënt beheer van meerdere resources:
- Gebruik
shift + pijltjesom meerdere resources te selecteren - Bulk delete met
ctrl-d - Bulk log viewing met
l - Filter met labels om specifieke resource groepen te beheren
Bookmark Favoriete Views
Maak bookmarks voor veelgebruikte views:
# Bookmark huidige view
ctrl-b
# Bookmark management
:bm⏎
Volgende Stappen
- Bekijk de Kubernetes Basics guide voor meer Kubernetes concepten
- Leer over Monitoring voor diepgaande systeem analyse
- Verken Troubleshooting voor meer debug strategieën
- Ontdek Helm Charts voor applicatie deployment
- Bestudeer ArgoCD Basics voor GitOps workflows