Skip to content
Docs · Documentation

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, VerticalPodAutoscalers (when the VPA CRDs exist)
NetworkServices, EndpointSlices, Endpoints, Ingresses, Routes (OpenShift), IngressClasses, NetworkPolicies, and the Gateway API kinds the cluster serves: Gateways, GatewayClasses, HTTPRoutes, GRPCRoutes, TCPRoutes, TLSRoutes, UDPRoutes, ListenerSets, BackendTLSPolicies, ReferenceGrants
Config & SecretsConfigMaps, Secrets, ResourceQuotas, LimitRanges, HorizontalPodAutoscalers, PodDisruptionBudgets
StoragePersistentVolumeClaims, PersistentVolumes, StorageClasses, VolumeAttachments, CSIDrivers
Access ControlServiceAccounts, Roles, RoleBindings, ClusterRoles, ClusterRoleBindings
Device ResourcesResourceClaims, ResourceClaimTemplates, DeviceClasses, ResourceSlices, DeviceTaintRules. Shown only when the cluster serves resource.k8s.io.
ClusterNodes, Namespaces, CustomResourceDefinitions, APIServices, PriorityClasses, RuntimeClasses, Leases, Mutating and Validating webhooks, Validating and Mutating admission policies with their bindings
AdministrationInstalled Operators and OperatorHub (OLM only), Helm Releases, Cluster Updates, Argo CD (Applications, ApplicationSets, Projects) when the CRDs exist
Workloads viewsApplications, grouped by app.kubernetes.io/instance (see Applications)
Custom ResourcesEverything else the cluster serves, grouped by API group

An entry appears only when the cluster serves its kind. Kinds that now have their own place no longer show under Custom Resources.

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, a Ports section per container with a one-click Forward (a running forward shows its local address, where a click opens HTTP ports in the browser or copies the address, and a stop button), plus usage sparklines. UDP ports and read-only clusters get no forward button.
  • Deployments, StatefulSets, ReplicaSets: − / + next to *ready* scale by one. Quick clicks are merged into one request and shown as "scaling to N" until the object has it. Scaling to 0 asks first (typed on production). The buttons are hidden on read-only clusters and when RBAC denies patch on scale. Deployments add the rollout strategy and history.
  • Nodes: capacity, taints and addresses, usage, and a Devices section for device resources. Services: endpoints and ports with a Forward button. PVCs: claim and volume, and the pods that mount the claim, with their status and a link.
  • Ingresses and Routes: hosts and URLs with Open in browser, backends with weights and resolved ports, endpoints and pods. Routes add the routers' Admitted conditions, and TLS only shows whether a certificate is present. The private key is masked with a reveal toggle and a copy button.
  • ConfigMaps and Secrets: a data block per key and a Used by section (see below). Secret values are masked.
  • CronJobs: a job history, newest first, with a live duration for running jobs.
  • Contributed sections: Metrics, Alerts, Flows, Argo CD and Web views, when the cluster supports them.

Text in the details panel and the Describe tab is selectable: drag to select, Ctrl A to select the pane you last clicked in and Ctrl C to copy. Double-click selects a word and triple-click a line. A selection stays inside the pane it started in, dragging past the pane's edge scrolls it, and a value that wraps stays on its key's line when copied. The same works in the Alerts, Argo CD, Flows, OperatorHub, Updates and web view panes. Links open on a click, not after a drag. In a table, Ctrl C copies the selected text, otherwise the names of the selected rows. Text inside dialogs can't be selected, so dialog values that matter have a copy button.

ConfigMap data and Used by

A ConfigMap shows one block per key, sorted like kubectl, with binaryData last. The header has the key, a format chip (YAML, JSON, properties, shell, XML or text, from the extension and the content), size, line count, a soft-wrap toggle and a copy button. A block shows its first 20 lines with Show all N lines. It stops at 2,000 lines, and Open in YAML editor shows the rest. YAML values are highlighted. Binary keys show their decoded size and a *binary* chip, copy as base64 and have Save to file…. An immutable ConfigMap gets a chip.

  • With more than 8 keys a key filter, Expand all and Collapse all appear.
  • Copy all copies the data map as YAML or as .env. The .env form takes single-line values only, and the menu says how many keys it skipped.
  • Used by (ConfigMaps and Secrets) lists the pods that reference the object through volumes, projected volumes, env key references and envFrom, grouped by their Deployment, StatefulSet or other owner, and per key where a reference names one.
  • Secrets use the same blocks once revealed. Nothing is revealed by default.

Resource views

Some kinds get columns and details sections that connect them to the objects they affect. Names in cells that refer to another object (an EndpointSlice's Service, a binding's policy, a VPA's target) are links.

KindColumnsDetails
ResourceClaim, ResourceClaimTemplate, DeviceClass, ResourceSliceState (Pending, Allocated, Allocated reserved by N), device classes, device health, driver, pool, node, allocated devicesRequests with their CEL selectors, the allocation and its node, reserved-for pods, devices with attributes, capacity, taints and the claim holding each. A Pod gets a Resource claims section, a Node a Devices section.
Validating and Mutating admission policies, bindingsValidations or mutations, failure policy, bindings, policy link, validation actions, param refMatch constraints, match conditions, variables, validations and audit annotations (CEL in monospace, no syntax highlighting), the bindings and their params. A binding shows its policy and the namespaces it matches. Webhook configurations show match conditions the same way.
Gateway, GatewayClass and routesClass, addresses, programmed, listeners, attached routes, parents, hostnames, backends, acceptedA Gateway lists its listeners with state and attached-route counts and the routes attached. Routes show acceptance per parent and their rules with backends linked to Services. A Service gets a Routes section and an EndpointSlices section.
VerticalPodAutoscalerTarget, update mode, recommended CPU and memoryPer container: lower bound, target and upper bound next to the current requests.
EndpointSliceService, address type, ready/total endpoints, portsEndpoints with links to their pods.
Lease, PriorityClass, RuntimeClassHolder and renewed, value and preemption, handler and overheadDescribe text.

Palette short names for :: :claims, :claimtemplates, :deviceclasses, :slices, :vap, :vapb, :map, :mapb, :eps and :vpa. :rc stays ReplicationController. The YAML editor has templates for a ValidatingAdmissionPolicy with a binding and for a ResourceClaimTemplate.

Export a table as CSV

Open the Columns menu and choose Export CSV…, or run List: Export CSV in the palette. Kubyl asks where to save the file and exports what the table shows: the visible columns, in the current sort and filter, including columns filled from related objects. Cells hold the same text as the table.

  • The file follows RFC 4180 (CRLF line ends, quoted fields) and has no byte order mark.
  • Cells starting with =, +, -, @, a tab or a carriage return get a leading ', so a spreadsheet does not run them as formulas. A negative number becomes '-5.
  • Secret lists export only the name, namespace, type, number of keys and age. Values are never exported.
  • The same export is available in the Applications, Security and Cost views.

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). Rollout undo covers Deployments, StatefulSets and DaemonSets and shows a revision picker with the current revision marked. Drain waits for PodDisruptionBudgets, retrying every 5 seconds for up to 10 minutes. When part of a bulk action could not run, Kubyl reports the skipped items. All confirmations are stricter on production clusters: Delete, Scale, Cordon, Uncordon, Drain and Rollout undo ask for a typed name.

Something missing or wrong? Open an issue on GitHub.