Observability
Metrics & Resource Usage
When your cluster has metrics-server (every managed cluster does), Kubius polls every 15 seconds and shows live CPU and memory usage with history charts.
Where you see it
- Pod detail → Overview tab → Resource Usage - live CPU and memory for the pod
- Deployment / StatefulSet / DaemonSet detail - aggregated CPU and memory across every backing pod
- Node detail → Overview tab → Node Resources - node-wide CPU, memory, pods count, and ephemeral storage
Modes - gauges and charts
Each section has a Mode toggle in the section header:
- Gauges - a horizontal bar showing actual vs requested vs limit
- Charts - live line graph with the last several minutes of history
Use Expand (the pill on the left of the section header) to make the charts taller - useful when the section is the focus of your work.
Display units
Configure in Preferences → Units:
- CPU - percent of one core (
50%), raw fraction (0.5), cores (0.5 cores), or millicores (500m) - Memory -
MB(decimal, 1000-based),Mi(binary, 1024-based), orM(K8s SI shorthand)
The selected format applies everywhere - charts, gauges, tooltips, and the Node Resources table.
Node charts
Node detail views show four panels in collapsed mode (CPU + Memory on top, Pods + Ephemeral Storage below) and stack them vertically when expanded.
The Pods chart shows pod count over time vs the node’s pod ceiling. Ephemeral Storage shows kubelet-reported volume usage in the unit you’ve configured.
Allocatable vs Capacity
Node and cluster charts draw two ceilings: a muted grey Capacity line (the node’s total hardware) and a distinct amber Allocatable line (what’s actually available to schedule - capacity minus the reservation Kubernetes keeps for the OS, kubelet, and the eviction threshold). Allocatable is the meaningful number - it’s what the scheduler packs against, and on GKE it’s often ~1.5–2 GiB less than capacity. Every percentage Kubius shows (gauges, the live-values row, the node list) is out of allocatable, not capacity, so a node reading “95% memory requested” really is nearly full from the scheduler’s point of view even if the box has spare RAM.
The node list adds CPU Free / Mem Free columns (allocatable − requested) - the headroom a new pod’s request must fit within on a single node - and shows CPU/Mem Req as a percentage of allocatable.
Export
Each chart has an Export menu next to its title:
- PNG (Transparent) - high-DPI raster, transparent background
- PNG (White Background) - same but white
- SVG (Vector) - true vector with axis labels, legend, and the live-values row at the bottom
PNGs are rendered via SwiftUI’s ImageRenderer at 2x scale. Filenames are auto-generated as <resource>-<chart>-<background>.png.
Before the first poll arrives
The chart frame renders immediately when you open a detail view - axes, request/limit/allocatable/capacity reference lines, and the legend are all visible even with zero data points. The line plot fills in as polls arrive (Kubius double-fetches on pod / deployment detail open so you usually see at least two points within a second or two).
No metrics-server
If your cluster doesn’t have metrics-server installed, gauges show requests / limits only (no actuals) and the charts don’t appear. No error is shown - the polling is silent.