Migrating from Kubecost to Automated Optimization: What Changes and What to Keep Cast AI's 2026 State of Kubernetes Optimization Report, covering more than 23,000 clusters, found average CPU utilization at 8% with 69% of provisioned CPU overprovisioned, up from a 40% overprovisioning rate in the prior year's Cast AI cluster data. The report accompanies a Cast AI guide on migrating from Kubecost, the Kubernetes cost visibility tool IBM acquired through Apptio in September 2024, to automated optimization, noting that label taxonomies carry over intact while 90 days of historical cost data must be exported before decommissioning. Cast AI recommends running both systems in parallel for 30-90 days, with technical setup taking 2-4 weeks and validation before decommissioning taking 30-90 days. Kubecost is a cost visibility tool: it allocates Kubernetes spend to namespaces, labels and teams and shows where the money goes. It does not change what the cluster provisions. Teams migrate when reporting has done its job and the number has not moved – when everyone can see that requests are far above usage and nothing acts on it. The migration is less a replacement than a change of category: keep the label taxonomy and the allocation model you built, and add a layer that acts on what the reporting has been showing. Key takeaways - Your Kubernetes label taxonomy carries over intact. Those labels live in your manifests, not in Kubecost. - Historical cost data does not transfer automatically. Export 90 days before decommissioning. - Cast AI runs read-only by default. Running both systems in parallel for 30-90 days is safe and recommended. - Technical setup takes 2-4 weeks. Validation before decommissioning takes 30-90 days. - Kubecost reports provisioning problems. Automation tools fix them. The migration moves you from the first to the second. Kubecost gives you a precise map of where your Kubernetes spend is going. It does not move anything on the map. If your clusters are running at 8% average CPU utilization with 69% CPU overprovisioned, reading that dashboard is not the same as fixing the underlying problem. This guide covers the kubecost migration process: what to keep from your current setup, how to handle historical cost data, and how to move to automated optimization without losing the allocation model your team built. What Kubecost does well Kubecost excels at a specific job: allocating Kubernetes cost to the teams, namespaces, and workloads responsible for it. Built on OpenCost, a CNCF incubating project, it integrates Kubernetes resource data with cloud billing APIs to produce chargeback and showback reports. If your engineering organization needs to answer “which team spent the most on compute this month,” Kubecost answers that question accurately. In September 2024, IBM acquired Kubecost through Apptio, adding it to the IBM Turbonomic product suite. Development has continued on both Kubecost 3.0, released in September 2025, and the OpenCost open-source project. Kubecost 3.0 added GPU cost tracking, made Prometheus optional, and improved CSV export capabilities. For teams inside IBM’s enterprise toolchain, this integration matters for consolidated financial reporting across multiple clusters. The allocation engine is genuinely strong. It supports cost allocation by namespace, pod, deployment, label, and annotation. Both requests-based and usage-based cost models are available. If your team has invested in labeling discipline, adding team= , env= , product= , and cost-center= labels consistently across workloads, Kubecost surfaces that investment clearly in its reports. For setup details and architecture context, see the guide on Kubecost Kubernetes configuration https://cast.ai/blog/kubecost-kubernetes/ . Why teams move on: visibility without action Teams move on from Kubecost when they recognize that identifying a cost problem and resolving it are two separate operations, and their current tooling only handles the first. According to the Cast AI 2026 State of Kubernetes Optimization Report, covering 23,000+ clusters, average CPU utilization sits at 8%, with 69% of provisioned CPU overprovisioned across those workloads. That 69% figure is worth examining carefully. Cast AI cluster data from the prior year put the overprovisioning rate at 40%. Tool adoption increased over that period. Yet overprovisioning got worse, not better. The monitoring was there. The gap widened anyway. The structural reason is clear. Kubecost reports what resources are allocated and what they cost. It does not change what the cluster provisions. Rightsizing recommendations exist inside Kubecost, but they output suggestions for engineers to act on manually. Someone still opens a PR to update resource requests. Someone else reviews and merges it. Then a third person validates that the change did not cause OOMKills in production. At any meaningful scale, this workflow does not keep pace with the rate at which new workloads get deployed and resource patterns shift. A cluster running at 8% utilization with 69% overprovisioning is not a measurement problem. It is a provisioning problem that measurement alone cannot close. Visibility was always step one. What to keep from your Kubecost setup labels, allocation model, cost centres The most important thing to keep from your Kubecost setup is your label taxonomy, and it is also the thing most teams initially misunderstand: those labels are Kubernetes labels, not Kubecost labels. They live in your deployment manifests, Helm values, and CI/CD pipelines. Kubecost reads them. It does not own them. When you decommission Kubecost, those labels remain in your cluster exactly as they were. Here is a breakdown of what carries over and what requires active rebuild: | Element | Keep? | Action required | |---|---|---| | Kubernetes labels team=, env=, cost-center= | Yes | None. Labels already exist in the cluster. | | Allocation model logic requests vs usage-based | Yes | Recreate the same model in Cast AI Allocation Groups. | | Cost center structure | Yes | Recreate as Allocation Groups using the same label selectors. | | Budget threshold values | Yes | Translate to Cast AI anomaly alert rules. | | Showback cadence and recipients | Yes | Rebuild as scheduled Cast AI reports. | | Prometheus metric history | No | Export to CSV before decommissioning Kubecost. | | Kubecost-specific dashboard configs | No | Rebuild using Cast AI reporting and Allocation Groups. | | Drill-down time-series workload history | No | Does not transfer. Export what you need before shutdown. | For a deeper look at building a Kubernetes cost allocation model, see Kubernetes cost allocation https://cast.ai/blog/kubernetes-cost-allocation/ . These org assets are independent of any vendor: keeping them in manifests and documentation rather than locked inside tool configs means your cost model survives any tooling change intact. The allocation model decision, requests-based versus usage-based, is worth revisiting during migration. Both Cast AI and Kubecost support both models. Requests-based allocation is more predictable for showback because it reflects what was scheduled, not what was consumed. Usage-based allocation better reflects actual compute consumed. Document your current choice explicitly before starting the migration, so you recreate it intentionally rather than by accident. What to migrate: reporting, alerts, dashboards The practical migration work involves recreating your reporting infrastructure inside Cast AI. Three categories need direct attention. Dashboards and Allocation Groups Cast AI provides namespace, label, and team-based Allocation Groups with a 60-second data refresh. Map each Kubecost cost center view to a corresponding Allocation Group definition before you begin decommissioning. The label selectors you used in Kubecost translate directly. For API reference and console setup guidance, see the Cast AI cost management documentation https://docs.cast.ai/docs/cost-management . Alert thresholds Kubecost budget alerts translate to Cast AI anomaly detection rules. Pull your current Kubecost threshold values and configure equivalent rules in Cast AI before disabling Kubecost alerting. To create rules, navigate to Settings → Alerts → Anomaly Detection in the Cast AI console, or configure rules via the Cast AI API. Running both alert systems in parallel during the transition prevents gaps in coverage. A spike that fires in Kubecost should also fire in Cast AI. Verify this with a test before decommissioning. Scheduled reports If your finance or FinOps team receives weekly or monthly Kubecost exports, rebuild those schedules in Cast AI before switching off Kubecost. Cast AI supports showback and chargeback exports with custom schedules and recipient lists. One significant difference to flag: Cast AI cost data starts from the day you connect your cluster. There is no backfill from Kubecost records. For reports requiring historical continuity, plan a period where both systems contribute data to the same reporting view. Historical data: what transfers and what does not Historical Kubecost data does not transfer to Cast AI. Cast AI starts fresh from the cluster connection date and does not ingest Kubecost’s historical records. This is the most operationally significant constraint to plan around before you start. Kubecost stores cost data in Prometheus metrics. Kubecost’s default configuration uses Prometheus with 15-day retention, which is Prometheus’s own default rather than a Kubecost-imposed limit. You can extend retention by configuring Prometheus directly, but Kubecost’s UI may not surface older data beyond its own query window. Business and Enterprise deployments may extend retention further through Thanos or Cortex, but the data stays in your Prometheus infrastructure regardless of tier. Cast AI never touches it. Before decommissioning, take the following steps: - Export 90 days of allocation data using a full curl command against the Kubecost Allocation API: curl \ "http://