Latest / The Cloud Business Podcast with Fexingo: AWS, Azure, GCP, and Enterprise Infrastructure / Cloud Contracts Now Charge for Kubernetes Node Pool Autoscaling Events
Transcript
- Luna: Lucas, you see the new line item on that fintech’s bill last month? Lucas: The autoscaling event charge? Yeah. They ran 40 node pools across three regions — us-east-1, eu-west-2, ap-southeast-1 — and the bill showed $12,700 in scale-up event fees alone. That was on top of the actual compute. Luna: Twelve thousand seven hundred dollars for the system deciding to add nodes. Not for the nodes themselves — for the decision. Lucas: Exactly. And this is the kind of cost that flies under the radar because most teams look at node count, vCPU hours, maybe data egress. They don't think, 'How many times did my cluster autoscaler fire this month?' But the cloud providers are now metering that control-plane action as its own SKU. Lucas: And if this conversation is useful for what you’re building or running — especially if you’re deep in Kubernetes and watching your cloud bill grow faster than your workloads — the way these episodes stay ad-free is listener support. You can find us at buy me a coffee dot com slash fexingo. Totally optional, but it’s what keeps us digging into these line-item details rather than running sponsor reads. Luna: Yeah. And we’re grateful for everyone who’s chipped in. It makes a difference. Lucas: So back to that $12,700 number. Let's break down what the providers are actually charging and how you can estimate your own exposure before the invoice hits. Lucas: On AWS, the charge is per scale-up event for the cluster autoscaler — roughly $0.10 per event in most regions, but it varies if you're using Karpenter, which has a different pricing model. Azure charges per autoscale operation on the node pool, around $0.08 per. GCP applies a fee per node pool scaling decision, about $0.12 in us-central1. Luna: So the fintech with 40 node pools — if each pool scales up, say, 50 times a day, that's 2,000 events per day. Times 30 days — 60,000 events. At $0.10 average, that's $6,000. But they paid $12,700, so either they're scaling more or the rates are higher in their regions. Lucas: Right. Their average was closer to 90 scale-ups per pool per day, and they had some pools in ap-southeast-1 where the rate is $0.15. Also, AWS charges for both scale-up and scale-down events now — they changed the SKU in February 2026. So every time the cluster autoscaler adds or removes a node, it's a billable event. Luna: Wait — scale-down too? That means even when you're being efficient and cleaning up unused capacity, you're getting charged for the privilege? Lucas: That's the rub. Scale-down events are typically cheaper — around $0.03 — but they add up. In the fintech's case, scale-down events accounted for about 30% of that $12,700. So roughly $3,800 was just the system cleaning up after itself. Luna: What's the justification on the provider side? Why charge for control-plane decisions now? Lucas: The official line is that autoscaling consumes API server resources, etcd writes, and scheduler compute. Every time the cluster autoscaler makes a decision, it's hitting the Kubernetes API, updating the state, triggering the scheduler. At hyperscale — think tens of thousands of clusters — that becomes a meaningful infrastructure cost. So they're passing it through. Lucas: But the real story is that compute margins have been compressing. GPU prices, spot instance volatility, reserved instance discounts — providers are looking for new revenue streams in the control plane. Autoscaling events are just the latest. Luna: It's reminiscent of when cloud providers started charging for API calls to the object storage services. Remember when S3 PUT requests were free? Then they introduced per-request pricing. Same playbook. Lucas: Exactly the same. And just like with S3, the key is understanding your event profile before the pricing change lands in your contract. Most enterprise agreements are renegotiated annually, and these autoscaling fees are being added as line items during renewal. If you don't negotiate the rate or the threshold, you're stuck with the standard tariff. Luna: What can teams do to mitigate the cost? Is the answer just 'scale less'? Lucas: Partly, but not in the way you think. Scaling less doesn't mean under-provisioning — it means scaling smarter. One approach is to increase the cooldown period between scaling events. The cluster autoscaler has a parameter called 'scale down delay after add' — by default it's 10 minutes. If you bump that to 15 or 20 minutes, you reduce the number of scale-down events because you're giving workloads time to stabilize. Lucas: Another tactic is to use node pools with larger instance types. If you have a pool of t3.mediums and you're scaling frequently, switching to t3.large or even t3.xlarge means fewer nodes for the same capacity, hence fewer scale events. But that changes your bin-packing efficiency. Luna: Right, because larger instances mean less granularity. You might have 10% waste per node instead of 5%, so compute cost goes up. It's a trade-off. Lucas: And that's exactly the kind of analysis FinOps teams need to do now. Compute cost vs. autoscaling event cost. For that fintech, they ran the numbers: switching to larger instances increased their compute spend by 4% but reduced autoscaling events by 62% — saving them $7,900 a month. Net positive. Luna: So the optimization lever has moved from just 'right-size your instances' to 'right-size your instances AND your scaling behavior'. Lucas: Exactly. And there's a third option: using Karpenter instead of the standard cluster autoscaler on AWS. Karpenter provisions nodes directly via the EC2 API, not through the Kubernetes control plane, so autoscaling events are billed differently — they're tied to the EC2 instance launches, not the Kubernetes-level decision. Some teams see a 40% reduction in autoscaling-related charges just by switching. Luna: But Karpenter has its own pricing — per node hour, right? We covered that in episode 89. Lucas: We did. And for some teams, Karpenter ends up being cheaper overall because it consolidates nodes more aggressively. But it's not a silver bullet. If your workloads are highly bursty and unpredictable, the per node hour fee can exceed the per-event fee from the cluster autoscaler. Luna: Let's talk about how to forecast these costs. If you're going into a contract renewal next quarter, what metrics should you be gathering from your current clusters? Lucas: Start with the cluster autoscaler logs. Every scale-up and scale-down event is logged in CloudWatch on AWS, in Azure Monitor, or in Cloud Logging on GCP. You want to export those logs and count the events per node pool per day. Then multiply by the current rates — but don't use the list price, because you can negotiate. Lucas: Also look at the 'node group min size' and 'max size' settings. If you have a pool that can scale from 1 to 100 nodes, the autoscaler has a lot of room to create events. Tightening that range — say, min 5, max 50 — reduces the event space. Luna: But that could impact availability during traffic spikes. If you hit a sudden surge and the pool can only grow to 50 instead of 100, you're looking at pod pending. Lucas: That's where you need to pair it with horizontal pod autoscaling and maybe a cluster over-provisioner. The over-provisioner runs a few dummy pods that hold extra capacity — they get preempted when real workloads need to scale, reducing the need for the node pool to grow as fast. It's a buffer, and it can cut autoscaling events by 20-30%. Luna: So there's a pattern emerging: reduce event count, not just node count. Lucas: Exactly. And the providers are basically forcing that optimization by pricing the event. It used to be that you only paid for compute and storage. Now you pay for the orchestration too. That's a fundamental shift in cloud economics for Kubernetes shops. Luna: What about multi-cloud setups? If you're running on, say, AWS and GCP, you have two different pricing models and you can't easily compare. Lucas: That's the next layer of complexity. In our fintech example, they had pools on both AWS and GCP. The AWS portion was $7,200, GCP was $5,500. But on GCP, the fee is per node pool scaling decision, not per event — so a single decision might add or remove multiple nodes, and you're charged once. On AWS, it's per event, so if the autoscaler adds three nodes one by one, that's three events. Luna: Interesting. So GCP's model might be more cost-effective for workloads that scale in bursts, while AWS's model penalizes sequential scaling. Lucas: Precisely. And Azure's model falls somewhere in between — they charge per autoscale operation, but they also have a 'cool down' period where multiple changes within a window are consolidated into one charge. That's actually the most generous for bursty workloads, at least as of the July 2026 pricing. Luna: It sounds like the best defense is to get visibility into your autoscaling event counts before the contract renewal. Then you have leverage to negotiate a lower per-event rate or a cap. Lucas: Right. And if you're a mid-market company — not a hyperscaler spending millions — you might not have much leverage. But you can still ask for a 'scaling event allowance' — like a bucket of 100,000 events included in the base compute commit. Some providers are offering that. Luna: A 'scaling event allowance' — that's a new term for the cloud contract glossary. Lucas: It is. And it tells you that these charges are here to stay. The providers aren't rolling them back. We're going to see more of these control-plane metering moves — maybe even charging for pod scheduling decisions or service mesh sidecar injection events. Luna: So the takeaway for today: if you run Kubernetes in production, start auditing your autoscaling event logs now. Don't wait for the bill shock. Lucas: And when you do get that bill, remember that $12,700 number. That's real money that could go toward developer tooling or infrastructure improvements. The good news is, with a few configuration changes and the right contract terms, most teams can cut that charge by half. Luna: Alright, that's a solid action item. Thanks, Lucas. Lucas: Thanks, Luna. And for anyone listening, if you found this useful, we're at buy me a coffee dot com slash fexingo. Keeps the show ad-free and focused on what matters.