Skip to content
Docs · Resource lists

Using Kubyl

Resource lists

Live tables, filter syntax, sorting, the details panel and actions.

Resource lists are fed by Kubernetes watches and virtualised, so they stay fast with thousands of rows. Columns follow kubectl get and -o wide. Kinds without a built-in column set, such as custom resources, use the server's printer columns.

Kubyl Pods list with pod details panel
Pods with CPU and memory sparklines and the details panel.

Supported kinds

GroupKinds
WorkloadsPods, Deployments, StatefulSets, DaemonSets, ReplicaSets, Jobs, CronJobs
NetworkServices, Endpoints, Ingresses, Routes (OpenShift), IngressClasses, NetworkPolicies, Gateways, HTTPRoutes, GatewayClasses
Config & SecretsConfigMaps, Secrets, ResourceQuotas, LimitRanges, HorizontalPodAutoscalers, PodDisruptionBudgets
StoragePersistentVolumeClaims, PersistentVolumes, StorageClasses, VolumeAttachments, CSIDrivers
Access ControlServiceAccounts, Roles, RoleBindings, ClusterRoles, ClusterRoleBindings
ClusterNodes, Namespaces, CustomResourceDefinitions, APIServices, PriorityClasses, RuntimeClasses, Leases, Mutating and Validating webhooks
AdministrationInstalled Operators and OperatorHub (OLM only), Helm Releases, Cluster Updates, Argo CD (Applications, ApplicationSets, Projects) when the CRDs exist
Custom ResourcesEverything else the cluster serves, grouped by API group

Reorder or hide groups with explorer.group_order and explorer.hidden_groups. Counts next to kinds can be turned off with explorer.show_counts.

The toolbar

  • Breadcrumb and the filter box.
  • A namespace chip. Hold ⌘ or Shift while clicking to select several namespaces.
  • A Columns menu with Wide (-o wide). Column visibility is remembered per kind.
  • A live-status chip. Click a column header to sort.

Filter syntax

Press / to focus the filter. Terms are separated by spaces or commas and all of them must match.

TermMatches
wordName or namespace contains the word, case-insensitive.
!wordName or namespace does not contain the word.
/regex/, !/regex/Name matches (or does not match) a regular expression.
app=web, app==web, app!=webLabel equals or does not equal a value.
env in (prod,stage), env notin (dev)Label in or not in a set.
status.phase=RunningField selector. Keys starting with metadata., spec. or status..
Example
/api-/ !canary app=web env in (prod,stage)

Moving around

KeysAction
JorKorUporDownMove
GGorHomeFirst row
ShiftGorEndLast row
CtrlForPageDownPage down
CtrlBorPageUpPage up
EnterOpen the object
ShiftEnterShow details
CtrlEnterorAltEnterOpen in a new tab / in a split
SpaceMark a row
ShiftUporShiftDownExtend selection
CtrlASelect all
/Focus the filter
CtrlWToggle wide columns
:Open resource mode in the palette

The details panel

Open it with Shift Enter, or keep it docked. It has Summary, Describe, YAML, Logs, Terminal and Files tabs. Describe is kubectl describe-style text. Sections common to every object are status, owner chain, labels, annotations, conditions, related objects and recent events. Kind-specific content includes:

  • Pods: containers and ports with one-click forwarding, plus usage sparklines.
  • Deployments, StatefulSets, ReplicaSets: +/− scaling. Deployments add the rollout strategy and history.
  • Nodes: capacity, taints and addresses. Services: endpoints. PVCs: claim and volume.
  • Ingresses and Routes: backends and TLS. The private key is masked with a reveal toggle.
  • ConfigMaps and Secrets: data, and a Used by section. Secret values are masked.
  • Contributed sections: Metrics, Alerts, Flows, Argo CD and Web views, when the cluster supports them.

Actions

Every action is in the > palette and in the key-hint bar. They apply to the selection, and to all marked rows for bulk actions.

KeysAction
DDescribe
EEdit YAML
CtrlDDelete…
CtrlKKill (Pod)
ShiftSScale…
RRollout restart
URollout undo…
PPause or resume a Deployment
CorShiftCCordon / uncordon a Node
ShiftDDrain… a Node, or add a debug container to a Pod
TorShiftTTrigger a CronJob now / suspend or resume it
YorShiftYCopy name / copy YAML (Secret values are masked)
LLogs
SExec shell (Pod) or node shell (Node)
AltSShell in an editor tab
AAttach
FBrowse files (Pod)
ShiftForAltShiftFPort-forward… / forward the first port
WOpen a web view

Drain behaves like kubectl drain --ignore-daemonsets --delete-emptydir-data, evicts pods and shows progress. Delete has an optional grace period (explorer.default_grace_period). All confirmations are stricter on production clusters.

Something missing or wrong? Open an issue on GitHub.