General
Is Karpenter safe for production use?
Is Karpenter safe for production use?
How does a NodePool decide to manage a particular node?
How does a NodePool decide to manage a particular node?
What cloud providers are supported?
What cloud providers are supported?
Can I write my own cloud provider for Karpenter?
Can I write my own cloud provider for Karpenter?
What operating system does Karpenter deploy on nodes?
What operating system does Karpenter deploy on nodes?
Can I provide my own custom operating system images?
Can I provide my own custom operating system images?
Can Karpenter handle mixed-architecture clusters (arm vs. amd)?
Can Karpenter handle mixed-architecture clusters (arm vs. amd)?
What RBAC access is required?
What RBAC access is required?
Can I run Karpenter outside of a Kubernetes cluster?
Can I run Karpenter outside of a Kubernetes cluster?
What do I do if I encounter a security issue with Karpenter?
What do I do if I encounter a security issue with Karpenter?
Compatibility
Which versions of Kubernetes does Karpenter support?
Which versions of Kubernetes does Karpenter support?
What Kubernetes distributions are supported?
What Kubernetes distributions are supported?
How does Karpenter interact with AWS node group features?
How does Karpenter interact with AWS node group features?
- Manage all capacity using NodePools
- Use a mixed model with both dynamic (Karpenter) and statically managed capacity
- Use a fully static approach
How does Karpenter interact with Kubernetes features?
How does Karpenter interact with Kubernetes features?
- Kubernetes Cluster Autoscaler: Karpenter can work alongside Cluster Autoscaler. See Kubernetes Cluster Autoscaler for details.
- Kubernetes Scheduler: Karpenter focuses on scheduling pods that the Kubernetes scheduler has marked as unschedulable. See Scheduling for details.
Provisioning
What features does the Karpenter NodePool support?
What features does the Karpenter NodePool support?
Can I create multiple (team-based) NodePools on a cluster?
Can I create multiple (team-based) NodePools on a cluster?
If multiple NodePools are defined, which will my pod use?
If multiple NodePools are defined, which will my pod use?
How can I configure Karpenter to only provision pods for a particular namespace?
How can I configure Karpenter to only provision pods for a particular namespace?
kube-scheduler, and other scheduling mechanisms all share an identical understanding of which pods can schedule on which nodes.We recommend using Kubernetes native scheduling constraints to achieve namespace-based scheduling segregation. This can be enforced via policy agents — see this example for reference.Can I add SSH keys to a NodePool?
Can I add SSH keys to a NodePool?
Can I set limits on CPU and memory for a NodePool?
Can I set limits on CPU and memory for a NodePool?
Can I mix spot and on-demand EC2 capacity types?
Can I mix spot and on-demand EC2 capacity types?
Can I restrict EC2 instance types?
Can I restrict EC2 instance types?
- Attribute-based requests (e.g. “give me instances with at least X vCPUs”) are currently not possible via direct attributes.
- You can select instances with special hardware, such as GPUs.
- Use the
node.kubernetes.io/instance-typelabel in your NodePool’s requirements to restrict to specific instance types.
Can I use bare metal instance types?
Can I use bare metal instance types?
node.kubernetes.io/instance-type requirements only include metal instance types. If other instance types also fulfill pod requirements, Karpenter will prioritize all non-metal instance types before provisioning metal ones.How does Karpenter dynamically select instance types?
How does Karpenter dynamically select instance types?
lowest-price. For spot, Fleet selects the instance type with the lowest price combined with the lowest interruption probability — this may not be the strictly cheapest spot option.How does Karpenter calculate DaemonSet resource usage when simulating scheduling?
How does Karpenter calculate DaemonSet resource usage when simulating scheduling?
What if there is no spot capacity available?
What if there is no spot capacity available?
Does Karpenter support IPv6?
Does Karpenter support IPv6?
kube-dns service’s cluster IP. When using an AMI family such as AL2, Karpenter will automatically configure the EKS bootstrap script for IPv6.Some EC2 instance types do not support IPv6. The Amazon VPC CNI only supports instance types running on the Nitro hypervisor. Add a requirement to your NodePool to restrict to Nitro instances:Why do I see extra nodes launched for pending pods that remain empty and are later removed?
Why do I see extra nodes launched for pending pods that remain empty and are later removed?
Scheduling
When using preferred scheduling constraints, why do correctly-launched nodes sometimes get consolidated immediately?
When using preferred scheduling constraints, why do correctly-launched nodes sometimes get consolidated immediately?
kube-scheduler is responsible for scheduling pods, while Karpenter launches capacity. When using preferred scheduling constraints, kube-scheduler will schedule pods to any available node as soon as possible.For example: if you scale up a deployment with a preferred zonal topology spread and no existing capacity can run the pods, Karpenter launches multiple nodes to satisfy the preference. If one node becomes ready slightly faster and has enough capacity for multiple pods, kube-scheduler schedules as many pods as possible to that single ready node — it doesn’t consider the in-flight capacity that will be ready in a few seconds. If all pods fit on the single node, the remaining Karpenter-launched nodes are unused and removed by consolidation.When deploying an additional DaemonSet, why doesn't Karpenter scale up nodes to support it?
When deploying an additional DaemonSet, why doesn't Karpenter scale up nodes to support it?
preemptionPolicy: PreemptLowerPriority on your DaemonSet pods. This guarantees DaemonSet pods schedule on all nodes and causes lower-priority pods to be preempted and rescheduled onto new capacity that Karpenter will launch.Why aren't my TopologySpreadConstraints spreading pods across zones?
Why aren't my TopologySpreadConstraints spreading pods across zones?
topologySpreadConstraints. However, if the minDomains field is not set, the Kubernetes scheduler may schedule pods to nodes that do not fulfill zonal spread constraints — particularly when multiple nodes initialize at different times and one has enough capacity for several pods.An alternative workaround (before minDomains was available) is to launch lower-priority pause containers in each zone before launching your target pods. The pause pods would be preempted when your higher-priority pods are scheduled.Workloads
How can a developer deploying pods take advantage of Karpenter?
How can a developer deploying pods take advantage of Karpenter?
Can I use Karpenter with EBS disks per availability zone?
Can I use Karpenter with EBS disks per availability zone?
Can I set --max-pods on my nodes?
Can I set --max-pods on my nodes?
Why do the Windows2019, Windows2022, and Windows2025 AMI families only support Windows Server Core?
Why do the Windows2019, Windows2022, and Windows2025 AMI families only support Windows Server Core?
Windows2019, Windows2022, and Windows2025 AMI families use Windows Server Core for simplicity.If required, you can specify a custom AMI to run Windows Server Full. For example, to use Windows Server 2022 Full for Kubernetes 1.34, configure an amiSelector that references the AMI name:Can I use Karpenter to scale my workload's pods?
Can I use Karpenter to scale my workload's pods?
- Vertical Pod Autoscaler for scaling individual pod resources
- Horizontal Pod Autoscaler for scaling replicas
- KEDA for event-driven autoscaling
Deprovisioning
How does Karpenter deprovision nodes?
How does Karpenter deprovision nodes?
Upgrading Karpenter
How do I upgrade Karpenter?
How do I upgrade Karpenter?
KarpenterNode IAM Role and the KarpenterController IAM Role. To upgrade to version $VERSION, ensure both roles have the permissions described in the CloudFormation template at https://karpenter.sh/$VERSION/getting-started/getting-started-with-karpenter/cloudformation.yaml.For full upgrade instructions, see the Upgrade Guide.Upgrading a Kubernetes cluster
How do I upgrade an EKS cluster with Karpenter?
How do I upgrade an EKS cluster with Karpenter?
amiSelector field.v0.33 and will auto-discover new AMIs as soon as the cluster is upgraded.Upgrade the EKS cluster control plane
Karpenter drifts and replaces nodes automatically
Interruption handling
Should I use Karpenter interruption handling alongside Node Termination Handler?
Should I use Karpenter interruption handling alongside Node Termination Handler?
Why should I migrate from Node Termination Handler?
Why should I migrate from Node Termination Handler?
- You don’t need to manage and maintain a separate component exclusively for interruption events.
- Karpenter’s native interruption handling coordinates with other deprovisioning mechanisms (consolidation, expiration, etc.) so they are mutually aware.
Why am I receiving QueueNotFound errors when I set --interruption-queue?
Why am I receiving QueueNotFound errors when I set --interruption-queue?
- See Interruption Handling docs for the types of events Karpenter handles.
- See the Getting Started Guide for instructions on provisioning the SQS queue and EventBridge rules.
Consolidation
Why do I sometimes see an extra node launched during a deployment update that remains empty and is later removed?
Why do I sometimes see an extra node launched during a deployment update that remains empty and is later removed?
maxSurge strategy (the default is 25%), the surge pods may have no room to run on existing nodes. Karpenter launches a new node for the surge pods and then removes it once it’s no longer needed.Logging
How do I customize or configure the log output?
How do I customize or configure the log output?
data.zap-logger-config field in the configmap-logging.yaml ConfigMap.Available configuration options are specified in the zap.Config godocs.