Skip to content

AutoSpotting vs Karpenter for Spot on Kubernetes

Karpenter is a capable Kubernetes-native node provisioner that can request Spot directly. AutoSpotting works one layer down, at the AutoScaling group.

They sit at different layers, so this is less about which is better and more about which fits your setup, and when to use both.

Different layers, different jobs

Karpenter is an open-source Kubernetes node provisioner. It watches for pending pods and launches right-sized nodes to fit them, it can request Spot capacity directly, and it consolidates nodes as workloads change. If you want a Kubernetes-native provisioner and you are moving off Cluster Autoscaler, Karpenter is a strong, widely used choice.

AutoSpotting works one layer down, at the EC2 AutoScaling group. It converts the capacity of groups you already run to Spot, diversifies across compatible instance types, and falls back to on-demand automatically when Spot runs short. It is not a Kubernetes provisioner; it works with any service backed by an AutoScaling group. That includes EKS managed node groups and self-managed Kubernetes node pools, and also ECS, Elastic Beanstalk, and plain AutoScaling groups. So the comparison is not really either-or: the two operate at different layers and often suit different parts of the same estate.

Karpenter vs AutoSpotting

Karpenter

Scope
Kubernetes nodes (EKS, self-managed)
Adoption
Replaces your node provisioner; you define and operate NodePools
Spot handling
Requests Spot capacity directly for pending pods; consolidates nodes
On-demand fallback
Configurable via NodePools and weights
Where it runs
In-cluster controller
Cost
Open source

AutoSpotting

Scope
Any AutoScaling-group-backed service (EKS, ECS, Beanstalk, plain ASGs)
Adoption
Add a tag to existing groups; no provisioner change
Spot handling
Converts existing group capacity to Spot, diversified across compatible types
On-demand fallback
Automatic when Spot is exhausted across compatible pools; returns to Spot on recovery
Where it runs
Lambda in your AWS account, no SaaS backend
Cost
Open-source core, or 10% of savings for the commercial edition

Where Karpenter fits

Karpenter is the right tool when you want a Kubernetes-native provisioner in charge of your nodes. It shines when you are replacing Cluster Autoscaler, when you want nodes sized and consolidated in response to pending pods, and when your team is ready to define and operate NodePools as part of how the cluster runs. It requests Spot directly, and you can mix Spot and on-demand through NodePool configuration. If Kubernetes is your whole world and you want provisioning to live inside the cluster, Karpenter is a natural home for that.

Where AutoSpotting fits

AutoSpotting is the right tool when you do not want to replace your node provisioner. If your EKS or self-managed clusters run on managed node groups or self-managed AutoScaling groups that you are happy with, AutoSpotting brings Spot to that existing capacity with automatic on-demand fallback, by adding a tag. There is no new provisioning model to adopt and operate.

It also fits when Kubernetes is only part of the picture. Because it works at the AutoScaling group layer, the same tag on the same kind of group also covers ECS, Elastic Beanstalk, and plain AutoScaling groups. One team can use one approach for Spot across Kubernetes and non-Kubernetes workloads alike, instead of one tool for clusters and something else for everything else. Everything runs inside your own AWS account, with no SaaS backend and no cross-account access.

A note on reduced capacity

One behavior worth understanding across all of these options is what happens when Spot runs out. EKS managed node groups running Spot, and the native Auto Scaling group Spot integration in general, do not fall back to on-demand once Spot is exhausted across all configured instance types. They launch fewer nodes, so the cluster silently drops to reduced capacity until Spot frees up, often during high-demand periods such as the end-of-year holiday season. AutoSpotting fails over to on-demand automatically at the AutoScaling group layer, so the group keeps full capacity. With Karpenter, on-demand fallback depends on how you configure your NodePools and weights, so it is a setting to get right rather than an automatic default.

Using both

These are not mutually exclusive. Karpenter can run the clusters where you want a native provisioner, while AutoSpotting brings Spot with automatic on-demand fallback to the AutoScaling groups behind your other clusters and your non-Kubernetes services. Pick per workload rather than treating it as a single all-or-nothing decision. For a deeper look at Spot on containers, including ECS draining, see our guide to running Spot on Kubernetes and ECS.

AutoSpotting vs Karpenter FAQ

Are AutoSpotting and Karpenter direct competitors?

Not exactly. Karpenter is a Kubernetes-native node provisioner that watches pending pods and launches right-sized nodes, and it can request Spot capacity directly. AutoSpotting works one layer down, at the EC2 AutoScaling group, and converts existing group capacity to Spot with automatic on-demand fallback. They operate at different layers and can suit different situations.

When does Karpenter make more sense?

Karpenter fits when you want a Kubernetes-native provisioner, you are replacing Cluster Autoscaler, and you want node consolidation and bin-packing driven by pending pods. It replaces your provisioning model, which you then define and operate through NodePools.

When does AutoSpotting make more sense?

AutoSpotting fits when your nodes run on managed or self-managed node groups you do not want to replace, when you want Spot with automatic on-demand fallback without adopting a new provisioner, and when you also run non-Kubernetes services on AutoScaling groups, such as ECS, Elastic Beanstalk, or plain ASGs, and want one approach across all of them.

Can I use both?

Yes. Karpenter can manage the Kubernetes clusters where you want a native provisioner, while AutoSpotting brings Spot with on-demand fallback to the AutoScaling groups behind your other clusters and non-Kubernetes services. Choose per workload rather than treating it as a single either-or decision.

Bring Spot to your existing node groups

Tag the AutoScaling groups behind your clusters and services, and let AutoSpotting handle diversification, draining, and automatic on-demand fallback.