<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616" -->

---
title: How to Migrate from Cluster Autoscaler to Karpenter
description: A step-by-step migration guide from Kubernetes Cluster Autoscaler to Karpenter on EKS. Covers the motivation (8% average CPU utilization in autoscaled...
canonical: https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How to Migrate from Cluster Autoscaler to Karpenter | daily.dev
og:description: A step-by-step migration guide from Kubernetes Cluster Autoscaler to Karpenter on EKS. Covers the motivation (8% average CPU utilization in autoscaled...
og:url: https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616
og:image: https://api.daily.dev/og/posts/PgHtjH616.png
og:image:alt: How to Migrate from Cluster Autoscaler to Karpenter
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Migrate from Cluster Autoscaler to Karpenter

**[Cast AI](https://daily.dev/sources/castai)** · 13 min read · 0 upvotes · 0 comments

## Summary

A step-by-step migration guide from Kubernetes Cluster Autoscaler to Karpenter on EKS. Covers the motivation (8% average CPU utilization in autoscaled clusters, slow provisioning), prerequisites (IAM roles, subnet/security group tagging), parallel-run isolation strategies using taints or nodeSelectors, node group to NodePool/EC2NodeClass mapping with full YAML examples, incremental workload cutover, rollback procedures at every stage, and common pitfalls like missing discovery tags, over-restrictive instance requirements, missing PodDisruptionBudgets, and aggressive consolidation on stateful workloads.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://cast.ai/blog/cluster-autoscaler-to-karpenter-migration>

## Questions this post answers

### How do I map Cluster Autoscaler node groups to Karpenter NodePools?

Each existing node group maps to one NodePool plus one EC2NodeClass. The NodePool defines instance requirements, capacity type (spot or on-demand), resource limits expressed in total CPU/memory rather than node count, and disruption policy. The EC2NodeClass defines AMI selection terms, subnet and security group selectors (tagged with karpenter.sh/discovery), and the node IAM role such as KarpenterNodeRole-${CLUSTER_NAME}.

_daily.dev surfaces guides like this for engineers translating ASG-based configs into Karpenter NodePools._

### Can I run Karpenter and Cluster Autoscaler at the same time during migration?

Yes, they can run simultaneously because Cluster Autoscaler only manages nodes in ASGs it explicitly watches, while Karpenter calls the EC2 API directly and registers nodes outside those ASGs. The main risk is at the pod level, where pending pods without explicit routing could be scheduled to either autoscaler; use taints/tolerations or nodeSelector to isolate workloads, and annotate the Karpenter controller deployment with cluster-autoscaler.kubernetes.io/safe-to-evict: false.

_Teams staging a gradual autoscaler cutover can track workload-isolation tactics like this on daily.dev._

### How much faster is Karpenter than Cluster Autoscaler at provisioning nodes?

Karpenter typically provisions new nodes in 45-90 seconds, compared to 3-5 minutes for Cluster Autoscaler, based on a typical EKS deployment without prewarming; the gap can narrow with AMI caching or warm pools on AL2023. Cluster Autoscaler scales existing Auto Scaling Groups and waits for EC2 registration, while Karpenter calls the EC2 API directly and watches pod events in real time.

_Engineers weighing autoscaler speed for traffic spikes can compare tradeoffs like this on daily.dev._

## Similar posts on daily.dev

- [Deploy Karpenter on EKS: Node Auto-Scaling Guide \(2026\)](https://daily.dev/posts/deploy-karpenter-on-eks-node-auto-scaling-guide-2026--xmjijfzcy) · Cast AI · 0 upvotes · 0 comments
- [Salesforce Migrates 1,000\+ EKS Clusters to Karpenter to Improve Scaling Speed and Efficiency](https://daily.dev/posts/salesforce-migrates-1-000-eks-clusters-to-karpenter-to-improve-scaling-speed-and-efficiency-hwplkodi3) · InfoQ · 0 upvotes · 0 comments
- [Understanding Karpenter architecture for Kubernetes autoscaling](https://daily.dev/posts/understanding-karpenter-architecture-for-kubernetes-autoscaling-yfyvuwcvq) · Datadog · 0 upvotes · 0 comments
- [Karpenter vs Cluster Autoscaler: Which to Use in 2026](https://daily.dev/posts/karpenter-vs-cluster-autoscaler-which-to-use-in-2026-alll01fsk) · Cast AI · 0 upvotes · 0 comments
- [The Ultimate Guide to GPU Scaling With Karpenter](https://daily.dev/posts/the-ultimate-guide-to-gpu-scaling-with-karpenter-urd7zozms) · Cloud Native Now · 0 upvotes · 0 comments

---

Tags: [#aws](https://daily.dev/tags/aws), [#kubernetes](https://daily.dev/tags/kubernetes), [#finops](https://daily.dev/tags/finops)

[View this post on daily.dev](https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How to Migrate from Cluster Autoscaler to Karpenter","url":"https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616"},"datePublished":"2026-08-05T10:46:48.597Z","dateModified":"2026-09-14T08:22:50.892Z","description":"A step-by-step migration guide from Kubernetes Cluster Autoscaler to Karpenter on EKS. Covers the motivation (8% average CPU utilization in autoscaled...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/93aa31926ba9f61b4bdf8ae46268db2b?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/93aa31926ba9f61b4bdf8ae46268db2b?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Cast AI","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Cast AI","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/e5868702aaf84d8293e56794e2c6629c","url":"https://daily.dev/sources/castai"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"aws,kubernetes,finops","timeRequired":"PT13M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Cast AI","item":"https://daily.dev/sources/castai"},{"@type":"ListItem","position":3,"name":"How to Migrate from Cluster Autoscaler to Karpenter"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-to-migrate-from-cluster-autoscaler-to-karpenter-pghtjh616#faq","mainEntity":[{"@type":"Question","name":"How do I map Cluster Autoscaler node groups to Karpenter NodePools?","acceptedAnswer":{"@type":"Answer","text":"Each existing node group maps to one NodePool plus one EC2NodeClass. The NodePool defines instance requirements, capacity type (spot or on-demand), resource limits expressed in total CPU/memory rather than node count, and disruption policy. The EC2NodeClass defines AMI selection terms, subnet and security group selectors (tagged with karpenter.sh/discovery), and the node IAM role such as KarpenterNodeRole-${CLUSTER_NAME}. daily.dev surfaces guides like this for engineers translating ASG-based configs into Karpenter NodePools."}},{"@type":"Question","name":"Can I run Karpenter and Cluster Autoscaler at the same time during migration?","acceptedAnswer":{"@type":"Answer","text":"Yes, they can run simultaneously because Cluster Autoscaler only manages nodes in ASGs it explicitly watches, while Karpenter calls the EC2 API directly and registers nodes outside those ASGs. The main risk is at the pod level, where pending pods without explicit routing could be scheduled to either autoscaler; use taints/tolerations or nodeSelector to isolate workloads, and annotate the Karpenter controller deployment with cluster-autoscaler.kubernetes.io/safe-to-evict: false. Teams staging a gradual autoscaler cutover can track workload-isolation tactics like this on daily.dev."}},{"@type":"Question","name":"How much faster is Karpenter than Cluster Autoscaler at provisioning nodes?","acceptedAnswer":{"@type":"Answer","text":"Karpenter typically provisions new nodes in 45-90 seconds, compared to 3-5 minutes for Cluster Autoscaler, based on a typical EKS deployment without prewarming; the gap can narrow with AMI caching or warm pools on AL2023. Cluster Autoscaler scales existing Auto Scaling Groups and waits for EC2 registration, while Karpenter calls the EC2 API directly and watches pod events in real time. Engineers weighing autoscaler speed for traffic spikes can compare tradeoffs like this on daily.dev."}}]}
```

