Karpenter on EKS Fargate
Nov 15, 2025
Engineering

We're using Karpenter to manage our Kubernetes node scaling.
We're big fans of how fast Karpenter can provision just-in-time nodes for us across our EKS clusters but there was one sticking point, for obvious reasons the Karpenter controller pods can't run on Karpenter managed nodes.
To get around this we used AWS EKS managed node groups as init nodes and pinned Karpenter to said nodes. We provisioned a node group with a minimum and maximum of 2 nodes for Karpenter mostly (although other pods could run on these nodes too, to avoid wasting compute resources!)
The downside is that updating managed node groups is slow; updating two nodes, with a maximum of one available at a time, took between six and ten minutes, and we wanted to speed up this process.
The simple solution? Remove the init nodes! But then, where do we run Karpenter? Enter Fargate.
We created an EKS Fargate profile via our EKS Terraform module with a selector for the Karpenter namespace:
Pod Execution Role
If you've ever used ECS, you'll be familiar with the pod execution role. For Fargate and EKS, it's a straightforward role with two AWS managed policies attached:
Karpenter Helm Install
We use the hashicorp/helm Terraform provider to install both the Karpenter and CRD charts directly from our EKS module. This ensures that Karpenter is up and running before anything else, ready to provision compute.
Next, we set the namespace for the Karpenter chart to match the selector in the Fargate profile, which in our case is karpenter, and we're off to the races!
Notes
By default we're using Fargate's minimum resources which are 0.25 vCPU and 0.5GB RAM per task.
Currently you can't specify ARM when creating Fargate tasks on EKS so we're currently using x86 but the cost is around $20 per month for both tasks.
We've generally reduced the number of nodes across our EKS clusters too, resulting in some cost savings but much less waiting around for the Platform team!
Luke Livingstone, Engineering
June 30, 2025
Super Thinking










