Managed Node Groups vs Self-Managed Nodes vs Fargate Profiles
~12 min read
The three ways to provide compute capacity to an EKS cluster's data plane, and when to choose each.
Managed node groups are AWS-managed EC2 Auto Scaling groups purpose-built for EKS: AWS handles the underlying Auto Scaling group, coordinates rolling AMI/version upgrades, and integrates node lifecycle events cleanly with the cluster — this is the most common default for teams wanting standard EC2-based Kubernetes nodes without hand-building the automation themselves. Self-managed nodes give full control over AMI choice, custom bootstrap scripts, and instance configuration, at the cost of owning patching, scaling automation, and lifecycle management yourself — chosen when a team has specific OS/AMI requirements managed node groups don't support. Fargate profiles remove the node concept from a subset of workloads entirely: pods matching a profile's namespace/label selector run in AWS-managed, per-pod isolated environments, with no EC2 instance to patch or scale at all — ideal for low-traffic or bursty workloads where per-node capacity planning isn't worth the effort. A single cluster can mix all three: managed node groups for the bulk of steady-state workloads, self-managed nodes for a specialized workload needing a custom AMI, and Fargate profiles for a handful of low-priority background jobs.
💬 Deep Dive with AI
Key points
- •Managed node groups: AWS-managed EC2 ASG, most common default, still your choice of instance types/scaling
- •Self-managed nodes: full AMI/bootstrap control, full lifecycle ownership — chosen for specialized requirements
- •Fargate profiles: no nodes at all for matching pods, best for low-traffic or bursty workloads
- •A cluster can mix all three data-plane options simultaneously, matched per workload