Pepperdata Helps Karpenter Work Better

karpenter blog featured image

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. 

figure 2 karpenter blog

In fact, a Pepperdata benchmark demonstrated a 41.8% decrease in instance hours on Amazon EKS once Capacity Optimizer was enabled.

Capacity Optimizer doesn't replace Karpenter. Karpenter is a fantastic option for provisioning the best instance types on AWS in a fast and flexible way.

But the real-time data stream that Capacity Optimizer provides to the scheduler enables Karpenter to be used as efficiently as possible.

Capacity Optimizer provides the intelligence to ensure that Karpenter launches new nodes only when they're truly needed.

Figure 3: Running a standard benchmark workload, Capacity Optimizer enabled a 41.8% decrease in instance hours on Amazon EKS.

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.

Explore More

Looking for a safe, proven method to reduce waste and cost by 30% or more and maximize value for your cloud environment? Sign up now for a free cost optimization demo to learn how Pepperdata Capacity Optimizer can help you start saving immediately.