DEV Community

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

Posted 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.


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)