Skip to content

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.

K9s Interface

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:

  1. Header: Toont huidige context, namespace, en filter
  2. Command prompt: Voor het invoeren van commands (:)
  3. Resource view: Hoofdgebied met geselecteerde resources
  4. Footer: Toont beschikbare toetsenbord commands
  5. Crumbs: Navigatie-breadcrumbs bovenaan het scherm

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:

  1. Open pod view: :pod⏎
  2. Vind specifieke pod: /nginx⏎
  3. Bekijk logs: l
  4. Kies container (indien meerdere): selecteer met pijltjestoetsen
  5. Volg logs real-time: f
  6. Exit log view: Esc
  7. Open shell: s
  8. Exit shell: exit⏎ of ctrl-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 + pijltjes om 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

Aanvullende Informatie