DEV Community

Cover image for K9s ~ The Terminal UI That Changes How You Do Kubernetes
Shiva Shanmugam
Shiva Shanmugam

Posted on • Edited on

K9s ~ The Terminal UI That Changes How You Do Kubernetes

K9s gives you a real-time, interactive terminal dashboard for managing every resource in your cluster with keyboard shortcuts for everything.


Why kubectl Alone Isn't Enough

Anyone who has spent serious time with Kubernetes knows the pain in debugging a crashing pod means running four or five different commands just to understand what's happening. You're constantly context-switching between terminal windows, squinting at JSON blobs, and copy-pasting pod names.

# The old way — just to debug ONE crashing pod
kubectl get pods -n production
kubectl describe pod api-gateway-7d9f8b-xkp2q -n production
kubectl logs api-gateway-7d9f8b-xkp2q -n production --previous
kubectl exec -it api-gateway-7d9f8b-xkp2q -n production -- /bin/sh
kubectl port-forward api-gateway-7d9f8b-xkp2q 8080:80 -n production
Enter fullscreen mode Exit fullscreen mode

That's five commands, three copy-pastes, and a lot of cognitive overhead just for one pod.

kubectl vs K9s Side by Side

Task K9s kubectl
View all pods :pod then Enter kubectl get pods -A
Stream pod logs Select + l kubectl logs -f <pod-name>
Exec into pod shell Select + s kubectl exec -it <pod> -- /bin/sh
Port-forward Select + Shift+F kubectl port-forward <pod> 8080:80
Delete a resource Select + Ctrl+D kubectl delete pod <name>
Edit resource YAML Select + e kubectl edit pod <name>
Switch namespace Ctrl+A for all namespaces -n flag on every command
Real-time CPU/Mem ✅ Built-in pulse view ❌ Requires separate tooling
Rolling restart Select + Ctrl+L kubectl rollout restart deploy/<name>
Decode secrets Select + x kubectl get secret <name> -o jsonpath=...

What is K9s?

K9s is an open-source, terminal-based UI built by Fernand Galiana that wraps the entire Kubernetes API in a fast, keyboard-driven interface.

It's not a GUI, it lives in your terminal, it's blazing fast, and once you learn the shortcuts, you'll never want to go back to plain kubectl.

Think of K9s as htop for Kubernetes, it continuously watches your cluster state and updates in real time.

 ____  __.________
|    |/ _/   __   \______
|      < \____    /  ___/
|    |  \   /    /\___ \
|____|__ \ /____//____  >
        \/            \/

K9s — Kubernetes CLI To Manage Your Clusters In Style!
Enter fullscreen mode Exit fullscreen mode

Complete Shortcut Reference

Global Navigation

These shortcuts work from any view in K9s.

Shortcut Action
: + resource name Go to any resource view (e.g., :pod, :svc, :node)
? Open help / shortcut cheat sheet
Ctrl+A Toggle all namespaces view
Ctrl+C Quit K9s
Esc Go back / exit current view / cancel filter
/ Enter filter mode (fuzzy search current list)
! Toggle error view
Ctrl+U Clear filter
/ or k / j Navigate up/down (vim-style works!)
g / G Jump to top / bottom of list
Ctrl+R Refresh / reload the current view
:ctx Switch Kubernetes context
:ns Switch namespace
:h View command history
Ctrl+E Hide / show the header bar
Ctrl+P Toggle CPU/Mem pulse panel on/off
z Toggle error panel

Pod Management

Enter :pod or :po to access this view.

Shortcut Action
l Stream logs for the selected pod
p Previous logs (like --previous flag — for crashed containers)
s Open a shell (exec) into the selected pod/container
d Describe the selected pod (full metadata + events)
e Edit the pod YAML in your $EDITOR
y View full YAML of the selected resource
Ctrl+K Force kill / delete the selected pod (no confirmation)
Ctrl+D Delete with grace period (safe delete, with confirmation)
Shift+F Open port-forward menu for the pod
f Show all active port-forwards
Ctrl+W Toggle wide output (shows more columns)
Shift+C Sort by CPU usage
Shift+M Sort by memory usage
Shift+N Sort by pod name
Shift+O Sort by container count
Shift+R Sort by restart count
Shift+T Sort by age (time)
Ctrl+L Rolling restart of the pods in the parent deployment
a View containers within the pod
Enter Drill into pod / select container

Log Viewer

Press l on any pod to enter the log viewer.

Shortcut Action
f Toggle full screen for log view
w Toggle line wrap
/ Scroll up/down through logs
Page Up / Page Down Scroll by full page
g Jump to top (oldest logs)
G Jump to bottom (newest / live logs)
/ Search / filter within logs
s Toggle auto-scroll (tail mode on/off)
t Toggle timestamps in log output
p View previous container logs (for restarted containers)
Ctrl+S Save logs to a local file
09 Switch between containers within the pod
c Copy log line to clipboard

Services & Networking

Command / Shortcut Action
:svc View all Services
:ing View all Ingresses
:ep View Endpoints
:netpol View NetworkPolicies
:pf Manage all active port-forwards
Shift+F on a Service Open port-forward dialog for the service
d on a Service Describe service (selectors, ports, endpoints)
y on a Service View full Service YAML
e on a Service Edit service configuration
Ctrl+B on a Service Benchmark the service endpoint (load test)
Enter on an Ingress View ingress rules and backend info

Deployments, ReplicaSets & StatefulSets

Command / Shortcut Action
:deploy or :dp View all Deployments
:rs View all ReplicaSets
:sts View all StatefulSets
:ds View all DaemonSets
Ctrl+L on a Deployment Trigger a rolling restart
s on a Deployment Scale — open scale dialog (set replica count)
d Describe the deployment (events, conditions, strategy)
Enter on a Deployment Drill down into pods belonging to deployment
y View full deployment YAML
e Edit deployment YAML inline
Ctrl+D Delete the deployment (with confirmation)

Nodes & Cluster Management

Command / Shortcut Action
:node or :no View all cluster nodes
Shift+C Sort nodes by CPU usage
Shift+M Sort nodes by memory usage
d on a Node Describe node (taints, conditions, capacity, allocatable)
Enter on a Node View all pods running on that node
y on a Node View full node YAML (labels, annotations)
Ctrl+U on a Node Cordon a node (prevent new pod scheduling)
Ctrl+N on a Node Uncordon a node (re-enable scheduling)
Ctrl+D on a Node Drain the node (evict all pods safely)
:cl Cluster info view (API server, version info)
:ev View all cluster events (warnings, errors)

ConfigMaps, Secrets & Storage

Command / Shortcut Action
:cm View all ConfigMaps
:secret View all Secrets
x on a Secret Decode and view base64 secret values
e on a Secret Edit a secret (values auto-encoded on save)
:pvc View PersistentVolumeClaims
:pv View PersistentVolumes
:sc View StorageClasses
d Describe selected resource
Ctrl+D Delete selected resource

RBAC & Access Control

Command Action
:sa View ServiceAccounts
:rb View RoleBindings
:crb View ClusterRoleBindings
:cr View ClusterRoles
:role View Roles (namespaced)
:hpa View HorizontalPodAutoscalers
:vpa View VerticalPodAutoscalers
:po (PodDisruptionBudgets context) View PodDisruptionBudgets

Jobs & CronJobs

Command / Shortcut Action
:job View all Jobs
:cj View all CronJobs
Ctrl+T on a CronJob Trigger a CronJob manually (creates job immediately)
Enter on a Job View pods spawned by this job
d Describe the job (completions, conditions, duration)
Ctrl+D Delete job

Custom Resources (CRDs)

Command / Shortcut Action
:crd View all Custom Resource Definitions
:<crd-short-name> Navigate directly to any CRD (e.g., :vs for VirtualService)
Enter on a CRD List all instances of that custom resource
d Describe a CRD instance
y View the YAML of a CRD instance
e Edit a CRD instance

All Resource Commands at a Glance

Type these with : from anywhere in K9s to jump to any resource view instantly.

Workloads

Command Resource
:pod / :po Pods
:deploy / :dp Deployments
:sts StatefulSets
:ds DaemonSets
:rs ReplicaSets
:job Jobs
:cj CronJobs

Networking

Command Resource
:svc Services
:ing Ingresses
:ep Endpoints
:netpol NetworkPolicies
:pf Active Port Forwards

Cluster

Command Resource
:node / :no Nodes
:ns Namespaces
:ctx Contexts (switch cluster)
:ev Events
:cl Cluster Info

Config & Storage

Command Resource
:cm ConfigMaps
:secret Secrets
:sa ServiceAccounts
:pvc PersistentVolumeClaims
:pv PersistentVolumes
:sc StorageClasses

RBAC

Command Resource
:rb RoleBindings
:crb ClusterRoleBindings
:cr ClusterRoles
:role Roles

Auto-scaling

Command Resource
:hpa HorizontalPodAutoscalers
:vpa VerticalPodAutoscalers

Advanced Views

Command Description
:crd All Custom Resource Definitions
:xray deploy default Full dependency tree for deployments in default ns
:pulses Live cluster-wide CPU/MEM metrics dashboard
:popeye Run cluster sanitizer (finds misconfigs, deprecated APIs)

🔗 Resources


If this helped you, drop a ❤️ and share it with your team. Found a shortcut I missed? Drop it in the comments below! 👇

Happy clustering!

Top comments (0)