DevOpsPad vs k9s - terminal speed or a read-only desktop view

The DevOpsPad Logs tab with container and tail-line selectors, the Previous instance option checked and a timestamped log line.
The DevOpsPad Logs tab with container and tail-line selectors, the Previous instance option checked and a timestamped log line.

k9s is the tool many Kubernetes engineers live in: a keyboard-driven terminal UI that browses any resource type, streams logs, opens shells, port-forwards, edits and deletes. It is free, open source and very fast. DevOpsPad is not a replacement for it. DevOpsPad’s explorer is read-only, supports seven common resource types, and runs as a desktop app. What it adds is everything around the cluster: SSH tunnels to private API servers, the databases and queues your services use, and reviewed Deployment releases. Many people will want both.

At a glance

k9s DevOpsPad
Interface Terminal UI, keyboard-driven Desktop window, mouse and keyboard
Resource types Any, including custom resources pods, deployments, services, namespaces, nodes, configmaps, events
Edit / delete / scale Yes Not in the explorer; Infra console scales, restarts, releases and rolls back existing Deployments via a dry-run plan
Shell into containers Yes No
Port-forward Yes No
Logs Streaming Snapshots with timestamps, up to 2,000 lines / 256 KiB; previous instance
Events for a resource Yes Matched by UID
Auth Whatever kubectl supports, including exec plugins Token or client certificate; exec plugins not supported yet
SSH tunnel built in No (use kubectl config or ssh -L) Yes, with host-key verification
Databases and Kafka No MySQL, Redis, MongoDB, Kafka, ClickHouse
Platforms Linux, macOS, Windows macOS on Apple silicon (signed); others from source

See the k9s project site for its full feature list.

When to choose k9s

  • You want speed and full control. k9s puts every resource type one command away and lets you act on it immediately: describe, edit, delete, scale, shell, port-forward.
  • You need custom resources. k9s browses CRDs as easily as Pods. DevOpsPad’s explorer covers seven built-in types.
  • You need live logs. k9s streams. DevOpsPad takes snapshots and does not follow.
  • You use exec credential plugins. k9s uses your kubeconfig the way kubectl does. DevOpsPad rejects exec-based authentication in this version.
  • You work over SSH on a server. k9s runs in any terminal, including on the bastion itself.

When to choose DevOpsPad

  • You want a view you cannot break. In k9s, a delete is a couple of keystrokes away by design. DevOpsPad’s explorer has no delete, edit or exec. That matters when you hand access to a teammate who debugs production occasionally.
  • The API server is private. DevOpsPad opens a single-hop SSH tunnel per request, dials the kubeconfig’s API address from the SSH host, and keeps TLS verification from the kubeconfig. Nothing to keep running in another terminal.
  • You need the crash, not the current log. The Logs tab has a container selector covering app, init and ephemeral containers, tail lines and a Previous instance option. Events are filtered by UID, so a recreated Pod does not inherit stale events. See Pod logs and events.
  • Your incident is not only in Kubernetes. The same app shows the Redis keys, the MySQL rows and the Kafka partition leaders the Pod depends on.
  • Changes should leave a trail. Infra console releases, scales, restarts and rollbacks produce a reviewable plan before they run and a local record after. k9s applies actions immediately and is not designed to keep a change record.

The same incident in each tool

A Pod in team-a is restarting. In k9s you type :pods, filter with /api, press l for logs, toggle to the previous container, then d to describe and read the events at the bottom. It takes seconds if you know the keys.

In DevOpsPad you open the cluster connection, run get pods team-a, double-click the Pod and read the Overview tab for restart counts and container state. Events shows only events for that Pod’s UID. Logs with Previous instance checked shows the output of the container that crashed, which you can copy into an incident note. If the crash is a database timeout, the MySQL or Redis connection is in the same Explorer.

Neither flow is better in general. k9s is faster for someone fluent in it; DevOpsPad is easier to hand to someone who is not, and cannot delete the Pod by accident.

Using both

A pattern that works: k9s in your terminal for hands-on cluster work, DevOpsPad for the read-only investigation of a service and its data, and for Deployment changes that should go through a plan. They read the same kubeconfig and do not interfere with each other. Start with listing resources or the K3s connector.