Filtering¶
The query bar in the header is a highlighter, not a filter of last resort: matching pods glow, everything else dims.
No pod, node or box ever leaves the layout, so the shape of the cluster stays comparable while you narrow down. Once the
query is non-empty and valid, a live counter inside the input reads N / M pods (and turns red at 0).
ns:checkout on demo-shop. Type your own query into the bar.
Open full screen
Type whitespace-separated tokens. All tokens are ANDed — a pod must satisfy every one of them:
An empty query matches everything. A query that contains a malformed token is inert: nothing dims, and the
offending tokens are listed under the bar with the reason. Half-typing ns: can never blank the view.
Token reference¶
| Token | Matches | Notes |
|---|---|---|
ns:<name> |
pod namespace, exact | case-insensitive (ns:Kube-System works) |
node:<glob> |
node the pod is scheduled on | * is the only wildcard; anchored (whole name must match); case-insensitive |
qos:<class> |
QoS class: Guaranteed, Burstable, BestEffort |
case-insensitive; anything else is an error |
has:init-containers |
pods declaring at least one init container | currently the only has: field |
audit:<rule> |
pods breaking an audit rule | missing-requests, missing-limits, limit-overcommit, monolith, ratio-asymmetry, naked-pod, single-replica, spof-node, spof-zone, spof-spot |
health:<warning> |
nodes carrying a health warning, and every pod on them | cordoned, not-ready, memory-pressure, disk-pressure, pid-pressure, tainted, stranded-devices |
zone:<glob> region:<glob> pool:<glob> type:<glob> |
nodes with that topology label, and every pod on them | globs like node: (zone:us-east-1*); a node without the label never matches |
capacity:<type> |
spot or on-demand nodes, and every pod on them | spot, on-demand; case-insensitive |
key=value |
pod label equals value | key and value are case-sensitive (Kubernetes labels are) |
key!=value |
pod label differs from value | a missing label counts as unequal, so it matches too |
text |
pod name contains text |
case-insensitive substring |
"quoted text" |
pod name contains quoted text |
quotes force literal text — the grammar is skipped |
Examples¶
Every pod named like web, anywhere
Try it
Pods in storefront that run init containers
Try it
Pods the kubelet evicts before Guaranteed ones, on spot nodes Try it
Frontend pods that are not in production, named like web
Try it
Everything in one availability zone, in one namespace Try it
The node whose free GPUs no pod can reach, and every pod on it Try it
One specific node — globs are anchored, so dots are literal, not wildcards:
Guaranteed pods carrying a label value with a space:
Match a pod name that looks like a filter token — leading quotes make the whole token literal text:
Without the quotes, web:1 is read as an unknown filter prefix and reported as an error.
Sharp edges¶
!=wins over=.env!=prodis one inequality, neverenv!equalsprod.- A filter prefix must be a bare word before
:.app=ns:xis a label selector for keyapp, valuens:x— not a namespace filter. - Only
node:,health:and the topology tokens can dim a node. Node plates and boxes stay in the layout either way; pod-level terms dim pods, never their node. - A missing label matches
!=.env!=prodhighlights pods withenv: stagingand pods with noenvlabel at all — the Kubernetes selector semantics. Try it - Every problem is reported at once. The parser never stops on the first bad token, so a three-error query lists three errors. Try it
Errors you can hit¶
| Query | Message |
|---|---|
ns: |
ns: needs a value |
qos:Cheap |
unknown QoS class — use Guaranteed, Burstable or BestEffort |
has:sidecars |
unknown has: field — use init-containers |
capacity:reserved |
unknown capacity type — use spot or on-demand |
rack:r1 |
unknown filter — use ns:, node:, qos:, has:, … |
=frontend |
label selector needs a key |
app= |
label selector needs a value |
"" |
empty quoted value |
app="my app |
unterminated quoted value |
Focusing the input opens a popover with the same token list; it is replaced by the error list while a token is
malformed. The × on the right clears the query.