Why the AKS bill hides who spent what
Azure Cost Management sees AKS as virtual machine scale sets, managed disks, load balancers, and egress. It does not see your namespaces, your deployments, or your teams. A cluster running twelve services across eight teams appears as one node pool cost, and any tag you put on the cluster applies to the whole thing. So the most common question, how much did the payments team spend on AKS last month, has no answer in the native tooling. That gap is why platform teams end up absorbing cluster cost centrally, which removes every incentive for the teams on the cluster to use it efficiently.
How to split the cluster fairly
The fair split rests on one principle: charge each team for the capacity it caused the cluster to hold. Collect per namespace consumption of CPU and memory over the billing period from the cluster metrics. For each namespace take the greater of what it requested and what it actually used, because requests reserve node capacity that nothing else can schedule onto, so a team that over requests is genuinely consuming the cluster even while idle. Convert those weighted shares into a percentage of total schedulable capacity, then apply the percentages to the node pool cost from Cost Management.
Reconcile to the real bill with two shared buckets. Charge system components such as the ingress controller and monitoring agents, plus genuine cluster headroom kept for resilience, to the platform team as a shared service. Everything else lands on the team that consumed it. The result reconciles to the Azure invoice exactly, which is what makes finance trust it.
A worked example
Indicative figures, verified against the client's billing data, anonymized. A European SaaS company runs one AKS cluster whose node pools cost 60,000 USD a month in Azure Cost Management.
| Namespace or owner | Weighted share of capacity | Allocated monthly cost |
|---|---|---|
| Payments team | 34 percent | 20,400 USD |
| Search team | 22 percent | 13,200 USD |
| Data pipeline team | 18 percent | 10,800 USD |
| Other application teams | 14 percent | 8,400 USD |
| Platform shared, system and headroom | 12 percent | 7,200 USD |
Within a month of the payments team seeing 20,400 USD attributed to it, it cut its CPU and memory requests to match real usage and freed enough node capacity to remove a node, taking the cluster bill down without touching anyone else's work. The allocation did not save money by itself; it gave each team a number it could move.
Your next step
Stand up per namespace usage collection, weight by the greater of requests and usage, and split the node pool cost from Azure Cost Management by those shares. Publish it monthly so teams own their slice. For the broader method read the Azure cost optimization guide, and for neighbouring detail see tagging for cost allocation on Azure and untangling shared costs on Azure. To put the model into production with us, our Azure cost optimization service builds the allocation and the rightsizing that follows, and you can request a free trial with zero provider commissions.
Put a defensible number on your cloud spend.
No provider in the room, no published price list. Tell us your footprint and we will scope the savings against your billing data — we reduce your cloud spend or we reimburse our service fee.
The Cloud Spend Navigator: what changed in cloud pricing, commitments, and FinOps — no vendor spin.