User Tools

Site Tools


tools:k9s-short-cuts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tools:k9s-short-cuts [2026/06/19 12:47] – mctools:k9s-short-cuts [2026/06/19 14:17] (current) – created mc
Line 1: Line 1:
 +====== k9s Shortcuts ======
 +
 +Quick reference for navigating and operating a Kubernetes cluster with [[https://k9scli.io|k9s]]. Everything is driven from **command mode** (''​:''​) to switch resource views; single letters then act on the highlighted row.
 +
 +===== Launch =====
 +
 +<code bash>
 +k9s                          # default context, all namespaces
 +k9s -n my-namespace          # start in a namespace
 +k9s --context staging        # start in a specific context
 +k9s --readonly               # disable all mutating ops (prod/demos)
 +k9s -c pods                  # jump straight to a resource view
 +k9s --kubeconfig ~/.kube/x   # explicit kubeconfig
 +</code>
 +
 +===== Command mode — resource views =====
 +
 +Open with ''​:''​ then type a name or alias.
 +
 +^ View ^ Aliases ^
 +| Pods | ''po'' |
 +| Deployments | ''deploy'' ''dp'' |
 +| Services | ''svc'' |
 +| Nodes | ''no'' |
 +| Namespaces | ''ns'' |
 +| ConfigMaps | ''cm'' |
 +| Secrets | ''sec'' |
 +| Ingress | ''ing'' |
 +| PVCs | ''pvc'' ''pv'' |
 +| StatefulSets | ''sts'' |
 +| DaemonSets | ''ds'' |
 +| Events | ''ev'' |
 +| CRDs | ''crd'' |
 +
 +''​:ctx'' switches context, ''​:ns'' switches namespace, ''​:q'' (or repeated ''Esc'') quits. For CRDs use the kind, or the fully-qualified ''kind.group'' form if the short alias is ambiguous.
 +
 +===== Navigation =====
 +
 +^ Key ^ Action ^
 +| ''↑/↓'' or ''j/k'' | Move between rows |
 +| ''Enter'' | Drill into the resource (namespace → pods, pod → containers) |
 +| ''Esc'' | Go back / clear filter / close |
 +| ''​:'' | Command mode (switch resource view) |
 +| ''/'' | Filter rows in the current view |
 +| ''?'' | Help — all keybindings for the current view |
 +| ''Ctrl-a'' | List all available resource aliases |
 +| ''0''–''9'' | Quick-switch namespace by index (0 = all) |
 +| ''Tab'' / ''Shift-Tab'' | Move between panes |
 +
 +===== Acting on a resource =====
 +
 +Highlight a row, then:
 +
 +^ Key ^ Action ^
 +| ''d'' | Describe |
 +| ''l'' | Logs (current container) |
 +| ''Shift-l'' | Logs (previous / crashed container) |
 +| ''y'' | View YAML |
 +| ''e'' | Edit (opens ''$EDITOR'', applies on save) |
 +| ''s'' | Shell into the pod (exec) |
 +| ''Ctrl-d'' | Delete (with confirm) |
 +| ''Ctrl-k'' | Kill (delete, no grace period) |
 +| ''Shift-f'' | Port-forward |
 +| ''Enter'' | Drill in (pod → containers, etc.) |
 +| ''Space'' | Mark / select row (for bulk delete) |
 +| ''Ctrl-Space'' | Mark a range |
 +
 +===== Logs =====
 +
 +From a pod or container, ''l'' opens the log view:
 +
 +^ Key ^ Action ^
 +| ''0'' | Tail from the beginning |
 +| ''1''–''5'' | Last 1 / 5 / 10 / 15 / 30 min (configurable) |
 +| ''f'' | Toggle full-screen |
 +| ''w'' | Toggle line wrap |
 +| ''s'' | Toggle autoscroll |
 +| ''t'' | Toggle timestamps |
 +| ''c'' | Copy visible logs to clipboard |
 +| ''/'' | Filter log lines (regex) |
 +| ''Esc'' | Back to the resource view |
 +
 +For multi-container pods, ''Enter'' into the pod first, then ''l'' on the specific container.
 +
 +===== Filtering & search =====
 +
 +  * ''/text'' — fuzzy filter rows by name
 +  * ''/-l app=foo'' — filter by label selector
 +  * ''/!text'' — inverse filter (hide matches)
 +  * ''Enter'' keeps the filter; ''Esc'' clears it
 +  * Sort columns: ''Shift-c'' (CPU), ''Shift-m'' (mem), ''Shift-n'' (name), ''Shift-a'' (age), ''Shift-s'' (status), ''Shift-r'' (restarts) — press again to reverse
 +
 +===== Contexts & namespaces =====
 +
 <code> <code>
-:pods         :po +:ctx                  # interactive context switcher 
-:deployments  :deploy   :dp +:ctx staging          # jump directly 
-:services     :svc +:ns                   # namespace switcher
-:nodes        :no +
-:namespaces   :ns +
-:configmaps   :cm +
-:secrets      :sec +
-:ingress      :ing +
-:pvc          :pv +
-:statefulsets :sts +
-:daemonsets   :ds +
-:events       :ev +
-:crd                     # list all CRDs+
 </code> </code>
 +
 +''Ctrl-a'' lists every resource alias the current cluster exposes (including CRDs) — fastest way to explore an unfamiliar cluster.
 +
 +===== Networking =====
 +
 +There is no single "network" view — networking spans several resource types plus the port-forward machinery.
 +
 +==== Networking resource views ====
 +
 +^ Type ^ Aliases ^ Shows ^
 +| Services | ''svc'' ''service'' | TYPE, CLUSTER-IP, EXTERNAL-IP, PORTS, SELECTOR |
 +| Endpoints | ''ep'' ''endpoints'' | Backing pod IPs:ports per service |
 +| EndpointSlices | ''eps'' ''endpointslices'' | Newer endpoint representation |
 +| Ingress | ''ing'' ''ingress'' | Hosts, paths, backend services, TLS |
 +| IngressClasses | ''ic'' ''ingressclasses'' | Available ingress controllers |
 +| NetworkPolicies | ''np'' ''netpol'' | Ingress/egress rules, pod selectors |
 +| Pods | ''po'' | Already shows IP and NODE columns |
 +| Nodes | ''no'' | Node internal / external IPs |
 +
 +If your CNI exposes CRDs they're reachable too — e.g. ''​:ippools'', ''​:ciliumendpoints'', ''​:ciliumnetworkpolicies''. Use ''Ctrl-a'' to list what the cluster actually has.
 +
 +==== Networking keys ====
 +
 +^ Key ^ On ^ Action ^
 +| ''d'' | svc / ing / netpol | Describe — selectors, ports, rules, events |
 +| ''Enter'' | service | Drill into the endpoints / pods it routes to |
 +| ''y'' | any | Raw YAML (full spec) |
 +| ''Shift-f'' | pod / service | Start a port-forward |
 +| ''s'' | pod | Shell in to run ''ip a'', ''ss -tlnp'', ''nslookup'', ''curl'' |
 +| ''/'' | any list | Filter; ''/-l app=foo'' filters by label selector |
 +
 +==== Port-forward & benchmark ====
 +
 +  - Highlight a pod or service → ''Shift-f'' → pick container port, local port, bind address → confirm.
 +  - ''​:pf'' shows all active forwards. ''Ctrl-d'' cancels one. Forwards die when k9s exits.
 +  - From a forward, ''Ctrl-b'' runs k9s's built-in HTTP load test; results land in ''​:benchmarks'' (''​:be''), where you can view or delete them.
 +
 +==== Debug flow ====
 +
 +''​:svc'' → ''d'' to confirm the selector and ports → ''Enter'' to verify it has endpoints (empty endpoints = selector mismatch or no ready pods) → ''​:po'', find a backing pod, ''s'' to shell in and test connectivity from inside the cluster. ''​:xray svc'' gives a tree of service → endpoints → pods for topology at a glance.
 +
 +===== Tips =====
 +
 +  * ''--readonly'' (or ''readOnly: true'' in config) is worth defaulting on for any prod-touching context — greys out every mutating key.
 +  * Per-context skins are the best safeguard against acting on the wrong cluster — make prod red.
 +  * ''Ctrl-z'' toggles "wait" mode if the screen looks frozen during heavy refreshes; lowering ''refreshRate'' helps on large clusters.
 +  * If a CRD doesn't show under its short alias, use ''kind.group'' or find it via ''​:crd''.
 +  * ''​:pulse'' is a cluster health dashboard; ''​:xray <resource>'' shows a dependency tree.
 +  * ''?'' in **any** view lists the keys valid right there.
tools/k9s-short-cuts.1781873253.txt.gz · Last modified: by mc