Smart Filter Syntax
Krust includes a powerful structured filter engine that works across all 28 resource types. Type filters directly in the search box — autocomplete suggestions appear as you type.
Basics
| Type | Syntax | Example |
|---|---|---|
| Freetext | Any word | nginx |
| Key:Value | key:value | status:running |
| Comparison | field>N / field<N | restarts>5 |
| Negation | key:!value | status:!running |
| Combine | Space = AND | status:crash ns:prod |
Shared Filters
These work on every resource type:
| Filter | Example | Description |
|---|---|---|
| name: | name:nginx | Name contains value |
| ns: | ns:production | Namespace contains value |
| label: | label:app=nginx | Label exact match (key=value) |
| label: | label:app | Has label with key |
| annotation: | annotation:prometheus | Has annotation with key |
| age> | age>7d | Older than 7 days |
| age< | age<2h | Younger than 2 hours |
Duration units: s (seconds), m (minutes), h (hours), d (days).
Pod Filters
Status
| Filter | Description |
|---|---|
| status:running | Phase = Running |
| status:pending | Phase = Pending |
| status:succeeded | Phase = Succeeded |
| status:crash | CrashLoopBackOff |
| status:oom | OOMKilled |
| status:error | Failed / Unknown / Waiting |
| status:unhealthy | All non-healthy states combined |
Resource-specific
| Filter | Example | Description |
|---|---|---|
| node: | node:worker-1 | Pods on a specific node |
| image: | image:nginx | Image contains value |
| restarts> | restarts>5 | More than N restarts |
| cpu> | cpu>80 | CPU usage above N% |
| mem> | mem>60 | Memory usage above N% |
Workload Filters
For Deployments, StatefulSets, and DaemonSets:
| Filter | Description |
|---|---|
| status:running | ready ≥ desired |
| status:degraded | ready < desired |
| status:progressing | 0 < ready < desired |
| status:unhealthy | ready < desired |
| replicas>3 | Desired replicas above threshold |
Job & CronJob Filters
| Filter | Description |
|---|---|
| status:active | Currently running |
| status:complete | Succeeded |
| status:failed | Failed |
Service Filters
| Filter | Description |
|---|---|
| type:lb | LoadBalancer |
| type:np | NodePort |
| type:cluster | ClusterIP |
Negation
Prefix any value with ! to negate the match:
| Filter | Description |
|---|---|
| status:!running | All pods NOT in Running phase |
| ns:!kube-system | Resources NOT in kube-system |
| label:!app | Resources WITHOUT the "app" label |
| type:!lb | Services that are NOT LoadBalancer |
Combining Filters
Separate filters with spaces — all conditions must match (AND logic):
status:crash ns:production # Crashing pods in production
status:degraded label:app=api # Degraded deployments with app=api
name:api age>7d restarts>10 # Old API pods with many restarts
status:!running ns:!kube-system cpu>50 # Non-running pods outside kube-system Autocomplete
As you type, Krust suggests matching filter keys and values:
- Type st → suggests status:
- Type status: → suggests all available status values for the current resource
- Type status:! → suggests negated values
Press Tab or click a suggestion to accept it.
Tips
- Filters are case-insensitive
- Unknown keys are treated as freetext — typos won't cause errors
- Pod filters run in Rust for maximum performance (1500+ pods filtered in <1ms)
- Press ? in the app to open the built-in filter reference