Platform engineering

OpenCost 1.121.0 pins a dollar figure to every model and token on Kubernetes

OpenCost 1.121.0 pins a dollar figure to every model and token on Kubernetes

OpenCost 1.121.0 shipped on the CNCF blog on August 5, and for platform teams running AI workloads on Kubernetes the headline is a new lever: cost attribution that reaches per-model and per-token, not per-pod. The release notes describe it as first-of-a-kind Kubernetes inference cost tracking. The narrower operational claim is that OpenCost is now joining two data streams that have been sitting next to each other, GPU and node consumption on one side, token throughput on the other, without a shared key between them.

What the release adds

OpenCost already computes cost allocation for Kubernetes workloads by mapping resource consumption onto cloud pricing. The 1.121.0 release extends that mapping into the inference layer. Per the CNCF post, the new attribution is per-model and per-token, and it is derived from actual resource consumption rather than a synthetic estimate. In practice that means the same allocation engine platform teams already use for pod-level chargeback now has an axis for which model served a request and how many tokens the request processed.

The CNCF post does not publish the exact metric names, labels or configuration knobs that expose the new attribution. Expect those specifics to land in the OpenCost docs and its Prometheus scrape schema; the shape described below is the operational one the release announces, not the wire format.

The gap it closes

Platform teams standing up self-hosted inference on Kubernetes have been carrying two half-answers. The billing side of the house sees a GPU node bill that grew every month for a year. The application side sees a token counter that grew alongside it. Nothing in the middle turned one into the other, so the question "what does a thousand tokens of this model cost us to serve" resolved to a spreadsheet, not a metric.

That absence is what 1.121.0 targets. Per the release framing, the audience is teams that see infrastructure spend and token throughput but cannot connect them, and the concrete decision it unblocks is the self-hosted versus SaaS trade for a given model. If a hosted API charges $X per million tokens and your own cluster charges $Y for the same workload, $Y was previously a number you did not have.

Wiring it into the FinOps loop

The showback pattern OpenCost slots into does not change with this release. A platform team runs the OpenCost workload in the cluster, points it at the cloud billing feed, and pipes allocation data into whatever downstream tool the finance side already reads, usually a Prometheus dashboard, sometimes a data-warehouse pipeline for chargeback. What 1.121.0 adds is another axis on the same query: filter by model, group by token bucket, and allocation numbers that used to be flat now split along that dimension.

For teams doing chargeback, the new axis is the useful one. Before, a shared inference cluster billed back at the pod level, which meant one team's fine-tune experiment and another team's production endpoint were folded together whenever they shared a GPU. Per-model attribution splits them.

Where the seams are

Two sharp edges are worth naming before a team plans a rollout on 1.121.0.

  • Token attribution is only as reliable as the token counter it reads. If a model server does not emit a stable per-request token count, or emits an approximation, the per-token cost inherits that approximation. The CNCF post does not enumerate which model servers are wired in out of the box; that is a docs question before you promise finance a number.
  • Cost allocation assumes the underlying billing feed is up to date. Cloud billing lag is not new, but pairing it with fast-moving token metrics widens the window in which "cost per token" is directionally correct but not settle-your-bill accurate. Treat the number as showback, not invoicing, until you have reconciled a full billing cycle against it.

The read from the pager

For a platform team, this release is a metric, not a mechanism. Nothing about how workloads run or how GPU nodes are scheduled changed on August 5. What changed is that the cost lens the platform already reports through has a new column, and the self-hosted versus SaaS decision that platform leaders have been making by feel now has a number to argue with. Whether that number is trustworthy enough to move budgets depends on what your model servers emit, and that is the check to run before wiring 1.121.0 into a dashboard the CFO reads.

Source: CNCF Blog (cncf.io)

Related
Runners & infrastructure

Dynamic Resource Allocation hits GA in Kubernetes 1.35, and GPU CI jobs finally get a real API

DRA reached general availability in Kubernetes v1.35, and the NVIDIA DRA driver has dropped its Beta label. For teams running GPU workloads through Kubernetes-backed pipelines, it replaces a decade of nodeSelector gymnastics with a first-class request primitive.

July 2, 2026
Platform engineering

Kyverno's CLI learns to fake production so offline policy tests stop lying

A CNCF blog post walks through how the Kyverno CLI now stands up an in-memory fake of the Kubernetes API cache, so policies that lean on GlobalContextEntry lookups can be exercised offline instead of silently skipping. The workflow that used to say 'all pass' when it really meant 'never ran' has finally closed.

July 29, 2026
Platform engineering

Sandboxing your agent isn't the hard part, keeping it cheap is

A CNCF post from Solo.io's Lin Sun argues Kubernetes' agent-sandbox project delivers the isolation piece of hosting AI agents, while a sibling project, agent-substrate, is aimed at the resource-efficiency gap a per-agent pod leaves behind.

July 7, 2026

Turn this into your pipeline. Build it on Buddy.

Start free