K9s
K9s ist eine Terminal-Benutzeroberfläche (TUI) für Kubernetes. Sie ist schneller als die Bedienung über ein Web-Dashboard und auffindbarer als rohes kubectl.
Verwendung
- Terminal-basiertes Kubernetes-Cluster-Management: Schnelle, interaktive Curses-Oberfläche zur Navigation durch Pods, Services und Deployments.
- Live-Log-Streaming & Ressourcenüberwachung: Logs von mehreren Pods verfolgen, nach CPU/Arbeitsspeicher sortieren und Port-Weiterleitung.
- Benutzerdefinierte K9s-Plugins & Aliase: Erweiterung der CLI mit eigenen Shell-Befehlen (z. B. Ausführen von stern, cert-manager status).
- Schreibgeschützte Inspektion & Fehlerbehebung: Sicheres Debuggen von Produktionsclustern mit schreibgeschützten Modi.
Schnellstart
# K9s mit aktivem Kubeconfig starten
k9s
# Navigationskürzel in k9s:
# :pods - Alle Pods über Namespaces hinweg anzeigen
# :deploy - Deployments anzeigen
# :svc - Services anzeigen
# /<begriff> - Elemente in der aktiven Ansicht filtern
# l - Logs für den ausgewählten Pod streamen
# s - Shell (exec) im ausgewählten Container öffnen
Kernkonzepte
#Benutzerdefinierte Plugin-Konfiguration (plugins.yaml)
Eigene Tastaturbefehle für schnelles Debugging hinzufügen:
# ~/.config/k9s/plugins.yaml
plugin:
# 'Umschalt-D' auf einem Deployment drücken, um detaillierten Rollout-Verlauf anzuzeigen
rollout-history:
shortCut: Umschalt-D
confirm: false
description: "Rollout-Verlauf"
scopes:
- deployments
command: kubectl
background: false
args:
- rollout
- history
- deployment/$NAME
- -n
- $NAMESPACE
# 'Umschalt-F' auf einem Pod drücken, um interaktiven Debug-Container zu starten
debug-pod:
shortCut: Umschalt-F
confirm: true
description: "Pod debuggen"
scopes:
- pods
command: kubectl
background: false
args:
- debug
- -it
- $NAME
- --image=nicolaka/netshoot
- -n
- $NAMESPACE
#Wichtige Navigation & Tastaturkürzel
Cluster-Management beschleunigen:
:pod: Zur Pod-Ansicht über Namespaces springen.:svc,:deploy,:ing: Zu Services, Deployments und Ingresses springen./: Nach Ressourcen nach Name oder Status suchen und filtern.l: Logs für den ausgewählten Pod oder Container mitverfolgen.s: Eine interaktive Shell (sh/bash) im ausgewählten Container öffnen.Umschalt-F: Lokalen Port zum ausgewählten Pod-Service-Port weiterleiten.y: Vollständiges YAML-Manifest der ausgewählten Ressource anzeigen.
#K9s mit benutzerdefinierten Optionen starten
Starten von K9s in sicheren Modi:
# Im schreibgeschützten Modus starten, um versehentliches Löschen von Pods in der Produktion zu verhindern
k9s --readonly --namespace production
# Benutzerdefinierten Kontext und Aktualisierungsrate angeben
k9s --context prod-eks-cluster --refresh 2
Häufige Muster
#Benutzerdefinierte K9s-Kürzel und Plugins
Problem: Häufiges Ausführen benutzerdefinierter kubectl-Befehle über verschiedene Namespaces hinweg.
Lösung: Definieren Sie benutzerdefinierte Plugins in ~/.config/k9s/plugin.yaml.
# ~/.config/k9s/plugin.yaml
plugin:
raw-logs:
shortCut: Umschalt-L
description: "Logs ohne Kürzung mitverfolgen"
scopes:
- pods
command: kubectl
background: false
args:
- logs
- -f
- $NAME
- -n
- $NAMESPACE
- --context
- $CONTEXT
Best Practices (2026)
- Verwenden Sie
k9s --readonlybeim Verbinden mit Produktionsumgebungen, um versehentliches Löschen zu vermeiden. - Konfigurieren Sie benutzerdefinierte Plugins in
~/.config/k9s/plugins.yamlfür wiederkehrendekubectl-Befehle. - Nutzen Sie das Kürzel für die Port-Weiterleitung (
Umschalt-F) anstatt langekubectl port-forward-Befehle einzutippen. - Filtern Sie Ansichten mit
<all>Namespaces oder spezifischen Namespaces, um die API-Server-Last zu reduzieren. - Lassen Sie nicht dutzende aktive Port-Weiterleitungen offen; verwalten und beenden Sie diese in der
:portforwards-Ansicht. - Führen Sie K9s nicht ohne angemessene
--refresh-Intervalle gegen große Unternehmenscluster aus. - Löschen Sie keine Persistent Volume Claims (PVCs) über K9s, ohne Backups zu überprüfen.
Fehlerbehebung
| Fehler | Ursache | Lösung |
|---|---|---|
Boom!! K9s kann keine Verbindung zum Cluster herstellen | Aktiver kubeconfig-Kontext ungültig oder Cluster-Endpunkt nicht erreichbar. | Verbindung prüfen: kubectl cluster-info und Kontext mit kubectl config use-context wechseln. |
Pod-Logs werden in k9s nicht gestreamt | Pod-Container abgestürzt oder Benutzer hat keine RBAC pods/log-Berechtigung. | Container-Status prüfen und Cluster-Rollenberechtigungen überprüfen. |
Terminalanzeige gestört / Artefakte | Inkompatibles Terminal-terminfo oder zu kleines Terminalfenster. | Führen Sie export TERM=xterm-256color aus und maximieren Sie das Terminalfenster. |