Running Kubernetes on AWS? You're probably using Karpenter, the open-source autoscaler that dynamically provisions new instances as your EKS workloads grow.
Karpenter launches rightsized instances in real time in response to pending pods, based on available instance types and the resources applications need. It also terminates underutilized nodes to reduce costs.
But while Karpenter was designed to solve the problem of fast and efficient node provisioning, it doesn't fully address the issue of resource optimization.
Karpenter’s Blind Spots: Overprovisioned Pod Resource Requests and Underutilized Node Capacity
The challenge with Karpenter is that it assumes that your pod resource requests are accurate. And therein lies the catch.
Most Kubernetes workloads are overprovisioned in terms of memory and CPU—making it impossible for Karpenter to accurately launch rightsized instance types. While Karpenter does a great job provisioning resources, Karpenter only sees what pods request, not what they actually utilize—and most requests tend to be much larger than what's needed at any moment in time.
If your pods request more than they really need, then Karpenter will do its job and launch new nodes to match that inflated request. And every new node means additional cost for resources your cluster may not really need. In other words—you're paying for more resources than you need.
Enhancing Karpenter with Real-Time, Automated Resource Optimization
That’s where Pepperdata comes in.
Pepperdata Capacity Optimizer is a real-time, automated Kubernetes intelligent resource optimization solution that understands the actual utilization needs of each pod and node, and then provides this information to the scheduler. Enabled with this data, the scheduler can then pack pending pods on existing nodes as optimally as possible to match the actual hardware utilization requirements.
How does this intelligence impact autoscaling? Capacity Optimizer works with Karpenter to ensure that new nodes are launched only when existing nodes are truly packed to optimal capacity based on actual resource utilization. This ensures that Kubernetes clusters use all available resources on existing nodes before Karpenter launches new nodes.
Through these two mechanisms, Capacity Optimizer increases utilization levels by up to 80 percent and delivers an average 30 percent cost savings automatically, continuously, and in real time with no application code changes.
Visit us at pepperdata.com to learn more about real-time, automated resource optimization for Kubernetes that requires no manual tuning, no recommendations, and no application code changes.