Cost Explorer
The Cost Explorer is CostPilot’s primary tool for understanding where your Kubernetes spend is going. It lets you slice and dice costs by any dimension, apply filters, and drill down into specific workloads.
Dimensions
A dimension is the attribute you’re grouping costs by. CostPilot supports the following built-in dimensions:
| Dimension | Groups by |
|---|---|
| Cluster | Each connected Kubernetes cluster |
| Namespace | Kubernetes namespace |
| Workload | Deployment, StatefulSet, DaemonSet, or Job name |
| QoS class | Kubernetes Quality of Service class (Guaranteed, Burstable, BestEffort) |
| Instance type | Node instance type (e.g. m5.xlarge, e2-standard-4) |
| Region | Cloud provider region |
| Pricing type | On-demand, spot, or reserved |
Label dimensions
In addition to built-in dimensions, any Kubernetes label can be used as a dimension. If you’ve configured label mappings in Settings → Labels, they appear in the dimension picker with their display names (e.g. “Team”, “Environment”, “Cost Centre”).
Label dimensions let you answer questions like:
- “How much is the API team spending?”
- “What does our production environment cost compared to staging?”
- “Which cost centre owns the largest share of infrastructure?”
Filtering
You can apply filters to narrow results. Filters are additive (AND logic):
- Cluster — Scope to one or more clusters
- Namespace — Include only specific namespaces
- Label values — e.g.
team=backendorenvironment=production - Time range — Controls the period for all metrics
Filters are preserved when you switch dimensions, so you can explore a filtered subset across multiple groupings without re-entering criteria.
To see the full cost breakdown for a single team across all their namespaces, set a label filter (e.g. team=platform) and switch between the Namespace and Workload dimensions.
Drill-down
Clicking any row in the Cost Explorer opens a detail panel showing:
- Cost trend — Daily spend for the selected period
- Resource usage — CPU and memory usage vs. requests over time
- Efficiency score — For this specific dimension value
- Top pods — The highest-cost individual pods within this group
This lets you quickly identify which specific workloads are driving cost within a namespace or team.
Time ranges
The time range picker is shared across the Dashboard and Cost Explorer:
| Range | Best for |
|---|---|
| Last 24h | Investigating a recent deployment |
| Last 7d | Weekly review (default) |
| Last 30d | Monthly chargeback reporting |
| Last 90d | Quarterly trend analysis |
CostPilot stores metric data at three resolutions: 1-minute buckets for the last 24 hours, 1-hour buckets for 1–7 days, and 1-day buckets for data older than 7 days. The resolution used is automatically selected based on your time range.
Understanding the cost columns
Each row in the Cost Explorer shows:
| Column | Description |
|---|---|
| Cost | Total spend for the period |
| CPU cost | Portion attributable to CPU allocation |
| Memory cost | Portion attributable to memory allocation |
| Idle cost | Spend on unused capacity within this group |
| Efficiency | Resource usage ÷ resource requests |
| Trend | Change vs. previous equivalent period |
QoS class breakdown
The QoS class dimension is particularly useful for identifying cost risk. Pods in the BestEffort class have no resource requests or limits — they’ll be the first to be evicted under node pressure, but they also appear to cost very little because CostPilot allocates costs based on requests.
If you see a large proportion of BestEffort pods, consider adding resource requests to get accurate cost attribution.
Spot vs. on-demand
The Pricing type dimension lets you see how much you’re saving by using spot or preemptible instances. CostPilot fetches current instance pricing from each cloud provider and applies it at the node level, so your cost data automatically reflects spot savings.