Kubalance attributes cluster spend to teams at the pod level, and calculates it from the actual amounts in your AWS Cost and Usage Report rather than from list price. Idle capacity stays its own line item, and shared services get charged back to the teams consuming them.

AWS tells you what a cluster cost. It does not tell you who spent it. Estimating from namespace proportions holds up for the first few teams, then namespaces get shared, teams spread across several of them, and the split stops matching reality. Kubalance closes that gap: every pod's cost lands on the team running it.
One agent, running under a read-only ClusterRole. It makes outbound connections only — nothing needs to be opened inbound to the cluster.
Pod and node usage collected by the agent is joined with your AWS Cost and Usage Report, so Savings Plans, Reserved Instances and Spot discounts carry through untouched.
Cost broken down by team, namespace and cluster; idle capacity kept as its own line item; and shared services redistributed by a rule you set.
Cost is not estimated from namespace proportions. It is computed from each pod's actual resource requests and usage.
Figures come from the AWS Cost and Usage Report, so teams see the effective rate you actually pay after Savings Plans and Spot.
Capacity nobody requested is charged to no team. It is reported separately, with the amount recoverable by consolidating nodes.
Set an attribution strategy per shared namespace — proportional by requested resources, or an even split across consuming teams.
Every team's cost with the clusters behind it, exportable as CSV for whoever owns the budget conversation.
Set a monthly budget by team, namespace or cluster, and get alerted as the threshold approaches rather than after it is passed.
Production and staging clusters under one tenant, each with agent health and the time it last reported.
See cost spikes against the previous period, with the deploy that preceded the change named in the alert.
Pods, nodes, namespaces and pod metrics. Logs, Secrets and container contents are out of scope.
Kubalance screens, from per-team cost allocation through to budget alerts.
An agent that has to clear a vendor review should be able to show what it does rather than describe it. The Kubalance agent runs under a read-only ClusterRole and reads exactly four resources.
Container contents, logs, Secrets and application traffic are all out of scope. The agent only makes outbound connections.
Telling a team their namespace was 18% of the cluster invites an argument the moment they run their own numbers. A figure computed per pod, from the amount you were actually charged, survives that scrutiny: which pod, on which node, at which rate. Chargeback only works once it stops being disputable.
Idle capacity belongs to capacity decisions, not to whichever team happened to be scheduled nearby.
Namespace-level allocation works while one namespace maps to one team. Past roughly 10 teams, namespaces get shared, teams spread across several of them, and proportional estimates drift away from real consumption. Kubalance attributes cost at the pod level, from actual requests and usage.
The agent runs on any conformant Kubernetes cluster, wherever it is hosted. Billing reconciliation currently reads the AWS Cost and Usage Report, so allocation against a real bill applies to EKS today. GKE and AKS clusters can be monitored on usage data.
Costs come from the actual amounts in your AWS Cost and Usage Report, not from list price. Whatever effective rate you pay after Savings Plans, Reserved Instances and Spot is what teams see — otherwise you would be charging everyone for money you never spent.
A read-only ClusterRole covering four resources: pods, nodes, namespaces and pod metrics. It has no access to container contents, logs, Secrets or application traffic. The agent only makes outbound connections; nothing needs to be opened inbound to the cluster.
You decide. Each shared namespace gets an attribution strategy — proportional by requested resources, or an even split across teams. Shared cost then reaches the teams consuming it through a rule nobody has to argue about.
None of them. Idle capacity is reported as its own line item, because it is the result of a capacity decision rather than of whichever team happened to be scheduled nearby. The platform team owns it, and the amount recoverable by consolidating nodes is shown alongside it.