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