# aws/karpenter-provider-aws

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/aws-karpenter-provider-aws).**

7,661 stars · 1,275 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/aws/karpenter-provider-aws
- Homepage: https://karpenter.sh
- awesome-repositories: https://awesome-repositories.com/repository/aws-karpenter-provider-aws.md

## Description

karpenter-provider-aws is a Kubernetes node autoscaler and infrastructure provider for AWS. It serves as a node lifecycle manager and cluster cost optimizer that automatically provisions and removes compute instances based on the resource requirements of pending pods.

The project distinguishes itself through advanced AWS spot instance orchestration and price-capacity optimized selection to reduce cloud spend. It minimizes costs by consolidating underutilized nodes and prioritizing spot or reserved instances over on-demand capacity, while proactively migrating workloads before cloud provider interruptions occur.

The provider covers a broad range of capabilities including hardware provisioning for GPUs and bare metal servers, machine image management, and zonal fault tolerance. It manages networking configurations, storage topology alignment, and identity assignment, while implementing disruption guardrails and pacing to maintain application availability during scaling events.

## Tags

### Artificial Intelligence & ML

- [Cluster Cost Optimizers](https://awesome-repositories.com/f/artificial-intelligence-ml/financial-cost-optimizers/cluster-cost-optimizers.md) — Reduces cloud spend by removing empty nodes, consolidating pods, and migrating workloads to cheaper instance variants. ([source](https://cdn.jsdelivr.net/gh/aws/karpenter-provider-aws@main/README.md))

### DevOps & Infrastructure

- [Compute Node Autoscaling](https://awesome-repositories.com/f/devops-infrastructure/storage-provisioning/on-demand-resource-provisioning/compute-node-autoscaling.md) — Automatically provisions and removes cloud compute instances based on the resource demands of pending pods.
- [Cloud Infrastructure Cost Optimization](https://awesome-repositories.com/f/devops-infrastructure/cloud-infrastructure-cost-optimization.md) — Reduces cloud spending by consolidating underutilized nodes and prioritizing cheaper spot or reserved instance types.
- [Cloud Node Lifecycle Management](https://awesome-repositories.com/f/devops-infrastructure/cloud-node-lifecycle-management.md) — Maintains stability and reduces waste by removing underutilized or expired nodes and coordinating interruption handling. ([source](https://karpenter.sh/docs/faq/))
- [AWS Provisioners](https://awesome-repositories.com/f/devops-infrastructure/cloud-provisioning/aws-provisioners.md) — Manages EC2 instance lifecycles, machine images, and networking specifically for AWS-based Kubernetes clusters.
- [Kubernetes Cluster Autoscalers](https://awesome-repositories.com/f/devops-infrastructure/cluster-scaling-orchestrators/kubernetes-cluster-autoscalers.md) — Automatically provisions and removes compute instances based on the resource requirements of pending pods.
- [Cluster State Reconciliation](https://awesome-repositories.com/f/devops-infrastructure/cluster-state-reconciliation.md) — Implements continuous processes to align the actual state of the cluster with the desired node pool configuration.
- [Node Draining](https://awesome-repositories.com/f/devops-infrastructure/fault-tolerance/kernel-fault-injection/fault-injection-testing/container-termination/graceful-shutdown-hooks/node-draining.md) — Ensures workloads are migrated to healthy nodes by draining and shutting down instances gracefully. ([source](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/))
- [Resource Simulation Selection](https://awesome-repositories.com/f/devops-infrastructure/hardware-based-instance-selection/resource-simulation-selection.md) — Models pod resource requirements against available instance types to select the most cost-effective compute options.
- [High Availability Clustering](https://awesome-repositories.com/f/devops-infrastructure/high-availability-clustering.md) — Distributes compute capacity across availability zones and manages pod disruption budgets to ensure application uptime.
- [Instance Type and Mix Policies](https://awesome-repositories.com/f/devops-infrastructure/instance-launch-configurations/instance-type-and-mix-policies.md) — Ranks and prioritizes instance types across reserved, spot, and on-demand categories to minimize cloud spend. ([source](https://karpenter.sh/docs/tasks/odcrs/))
- [Kubernetes Cluster Management](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-cluster-management.md) — Rotates nodes to handle configuration drift, automate image upgrades, and enforce maximum node lifetimes.
- [Kubernetes Node Lifecycle Management](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-node-lifecycle-management.md) — Handles node expiration, configuration drift, and graceful drainage of instances during cloud interruptions.
- [Kubernetes Node Provisioning](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-node-provisioning.md) — Creates and removes compute instances across cloud providers to optimize workload placement and reduce costs. ([source](https://cdn.jsdelivr.net/gh/aws/karpenter-provider-aws@main/README.md))
- [Node Lifecycle Recycling](https://awesome-repositories.com/f/devops-infrastructure/node-lifecycle-recycling.md) — Recycles nodes based on expiration timers, configuration drift, or predicted interruption events to maintain security. ([source](https://karpenter.sh/docs/concepts/))
- [Price-Capacity Optimized Allocation](https://awesome-repositories.com/f/devops-infrastructure/price-capacity-optimized-allocation.md) — Balances infrastructure cost and availability using price-capacity optimized allocation strategies for spot and on-demand capacity. ([source](https://karpenter.sh/docs/faq/))
- [Spot Instance Orchestration](https://awesome-repositories.com/f/devops-infrastructure/spot-instance-orchestration.md) — Manages interruptible spot instances by processing health events and notifications to migrate workloads. ([source](https://karpenter.sh/docs/reference/cloudformation/))
- [Capacity-Type Workload Distribution](https://awesome-repositories.com/f/devops-infrastructure/capacity-type-workload-distribution.md) — Splits pods across on-demand and spot instances using defined ratios and topology spread constraints. ([source](https://karpenter.sh/docs/concepts/scheduling/))
- [Cloud Block Storage Provisioning](https://awesome-repositories.com/f/devops-infrastructure/cloud-block-storage-provisioning.md) — Defines block device mappings and instance-store volume handling for provisioned cloud nodes. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))
- [Topology Alignment](https://awesome-repositories.com/f/devops-infrastructure/cloud-block-storage-provisioning/topology-alignment.md) — Launches nodes in specific availability zones to ensure compatibility with existing zonal storage volumes. ([source](https://karpenter.sh/docs/concepts/scheduling/))
- [Attribute-Based Provisioning](https://awesome-repositories.com/f/devops-infrastructure/cloud-infrastructure-deployment/managed-infrastructure-deployment/infrastructure-deployment-provisioning/attribute-based-provisioning.md) — Selects the most appropriate instance types by matching requirements against hardware attributes like CPU, memory, and storage. ([source](https://karpenter.sh/docs/concepts/scheduling/))
- [Cloud Resource Discovery](https://awesome-repositories.com/f/devops-infrastructure/cloud-resource-discovery.md) — Defines cluster endpoints and cloud-provider settings to identify and connect to the target environment. ([source](https://karpenter.sh/docs/reference/settings/))
- [Capacity-Based Node Drainage](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/capacity-scaling/capacity-based-node-drainage.md) — Drains nodes preemptively based on capacity block expiration to ensure graceful termination before hardware reclamation. ([source](https://karpenter.sh/docs/tasks/odcrs/))
- [Mixed Capacity Orchestration](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/mixed-capacity-orchestration.md) — Combines dynamic and fixed compute capacity by operating alongside static node groups or other autoscalers. ([source](https://karpenter.sh/docs/faq/))
- [Node Pool Segmentation](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/node-pool-segmentation.md) — Creates isolated sets of nodes for different teams or workloads using labels and scheduling constraints. ([source](https://karpenter.sh/docs/faq/))
- [Node Retirement](https://awesome-repositories.com/f/devops-infrastructure/cluster-node-management/node-retirement.md) — Drains and terminates nodes automatically after they reach a predefined maximum lifetime. ([source](https://karpenter.sh/docs/concepts/disruption/))
- [Custom Node Images](https://awesome-repositories.com/f/devops-infrastructure/custom-node-images.md) — Defines the operating system and boot images for new nodes using configurable image families and custom images. ([source](https://karpenter.sh/docs/faq/))
- [Workload Isolation](https://awesome-repositories.com/f/devops-infrastructure/environment-isolation/workload-isolation.md) — Separates team or application requirements using distinct node pools with specific operating systems and instance types. ([source](https://karpenter.sh/docs/concepts/))
- [Label-Based Node Segregation](https://awesome-repositories.com/f/devops-infrastructure/environment-isolation/workload-isolation/label-based-node-segregation.md) — Segregates workload subsets onto different nodes by applying pod-specific key-value pairs during launch. ([source](https://karpenter.sh/docs/concepts/scheduling/))
- [Hardware Accelerator Provisioning](https://awesome-repositories.com/f/devops-infrastructure/hardware-accelerator-provisioning.md) — Launches nodes with specific hardware accelerators based on resource requests in the workload manifest. ([source](https://karpenter.sh/docs/concepts/scheduling/))
- [Hardware Constraint Configurations](https://awesome-repositories.com/f/devops-infrastructure/hardware-constraint-configurations.md) — Allows restricting provisioned instances to specific architectures, instance families, or specialized hardware like GPUs and bare metal servers. ([source](https://karpenter.sh/docs/faq/))
- [Drift Detection](https://awesome-repositories.com/f/devops-infrastructure/infrastructure-as-code-alerting/drift-detection.md) — Replaces nodes when the actual state differs from the desired configuration defined in the node pool. ([source](https://karpenter.sh/docs/concepts/disruption/))
- [Instance Placement Policies](https://awesome-repositories.com/f/devops-infrastructure/instance-placement-policies.md) — Controls latency and fault isolation by assigning nodes to specific placement groups using diverse distribution strategies. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))
- [Kubelet Resource Reservations](https://awesome-repositories.com/f/devops-infrastructure/kubelet-resource-reservations.md) — Adjusts kubelet arguments including reserved resources and memory or disk eviction thresholds for stability. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))
- [GPU Node Provisioners](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-deployments/gpu-accelerated-deployments/gpu-node-groups/gpu-node-provisioners.md) — Launches compute instances with hardware accelerators based on workload resource requests.
- [Machine Image Resolution](https://awesome-repositories.com/f/devops-infrastructure/machine-image-resolution.md) — Dynamically retrieves and selects the most compatible operating system images for provisioning new cluster nodes. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))
- [Storage-Aware Zonal Placement](https://awesome-repositories.com/f/devops-infrastructure/multi-zone-resource-distribution/zonal-failover/zonal-resource-distribution/storage-aware-zonal-placement.md) — Matches node launch locations to the availability zones of existing persistent volumes to ensure storage compatibility.
- [Network Configurations](https://awesome-repositories.com/f/devops-infrastructure/network-configurations.md) — Manages subnet selection, security group attachments, and high-performance network interface configurations for nodes. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))
- [Node Scheduling Constraints](https://awesome-repositories.com/f/devops-infrastructure/node-scheduling-constraints.md) — Applies temporary startup taints to new nodes to prevent pod scheduling until networking and agents are ready.
- [Preemption Disruption Protections](https://awesome-repositories.com/f/devops-infrastructure/preemption-disruption-protections.md) — Prevents voluntary termination of critical workloads using pod disruption budgets and annotations during node consolidation.
- [Availability Budget Protection](https://awesome-repositories.com/f/devops-infrastructure/preemption-disruption-protections/availability-budget-protection.md) — Prevents node replacement if the action would breach pod disruption budgets to ensure applications remain healthy. ([source](https://karpenter.sh/docs/tasks/managing-amis/))
- [Node Disruption Blocking](https://awesome-repositories.com/f/devops-infrastructure/preemption-disruption-protections/node-disruption-blocking.md) — Prevents specific nodes from being selected for voluntary disruption using protective metadata annotations. ([source](https://karpenter.sh/docs/concepts/disruption/))
- [Pod Disruption Control](https://awesome-repositories.com/f/devops-infrastructure/preemption-disruption-protections/pod-disruption-control.md) — Prevents the eviction of specific pods during voluntary disruption using disruption budgets or metadata annotations. ([source](https://karpenter.sh/docs/concepts/disruption/))
- [Reserved Capacity Allocation](https://awesome-repositories.com/f/devops-infrastructure/reserved-capacity-allocation.md) — Allocates specific capacity reservations or blocks to ensure guaranteed compute availability for critical workloads. ([source](https://karpenter.sh/docs/tasks/))
- [Zonal Traffic Shifting](https://awesome-repositories.com/f/devops-infrastructure/traffic-load-balancers/zonal-traffic-shifting.md) — Improves cluster recovery by moving traffic and scaling operations across availability zones using zonal shift controls. ([source](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/))
- [Workload Placement Policies](https://awesome-repositories.com/f/devops-infrastructure/workload-placement-policies.md) — Implements pod-level scheduling constraints using taints and tolerations to restrict where workloads run on cluster nodes. ([source](https://karpenter.sh/docs/concepts/nodepools/))

### Business & Productivity Software

- [Price-Capacity Optimization](https://awesome-repositories.com/f/business-productivity-software/price-list-management/pricing-trackers/product-price-comparators/cloud-pricing-comparison/price-capacity-optimization.md) — Ranks instance types using current pricing and availability data to minimize spot interruptions and reduce spend.

### Operating Systems & Systems Programming

- [Cloud Interruption Handling](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/cloud-interruption-handling.md) — Drains nodes proactively by watching for cloud provider interruption events to allow workloads to migrate. ([source](https://karpenter.sh/docs/concepts/disruption/))

### Software Engineering & Architecture

- [Infrastructure Interruption Handling](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-architectures/infrastructure-interruption-handling.md) — Processes cloud health events and spot notifications to migrate workloads before instances are reclaimed.
- [Capacity Consolidation](https://awesome-repositories.com/f/software-engineering-architecture/node-lifecycle-management/distributed-node-lifecycles/node-pool-optimization/capacity-consolidation.md) — Minimizes infrastructure costs by replacing underutilized nodes with fewer or cheaper instances. ([source](https://karpenter.sh/docs/concepts/disruption/))
- [Disruption](https://awesome-repositories.com/f/software-engineering-architecture/request-throttling/rate-limiting/disruption.md) — Maintains cluster stability by capping the percentage of nodes that can be voluntarily disrupted simultaneously. ([source](https://karpenter.sh/docs/concepts/disruption/))

### Development Tools & Productivity

- [Automated Node Rotation](https://awesome-repositories.com/f/development-tools-productivity/build-automation-scripts/image-build-automation/machine-image-maintenance/automated-node-rotation.md) — Automatically replaces nodes when newer machine images are available or when current nodes drift from the desired configuration. ([source](https://karpenter.sh/docs/tasks/managing-amis/))
- [Infrastructure Disruption Pacing](https://awesome-repositories.com/f/development-tools-productivity/execution-throttling/infrastructure-disruption-pacing.md) — Controls the pace of node replacements by restricting the number of disruptions and defining allowed windows. ([source](https://karpenter.sh/docs/tasks/managing-amis/))

### Networking & Communication

- [Capacity Prioritization](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/network-traffic-management/capacity-prioritization.md) — Prioritizes the use of pre-purchased capacity via IDs or tags before falling back to on-demand or spot instances. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))

### Security & Cryptography

- [Instance-Level IAM Assignments](https://awesome-repositories.com/f/security-cryptography/role-based-access-control/conditional-role-assignment/service-role-assignments/instance-level-iam-assignments.md) — Specifies the identity role or instance profile that provisioned nodes assume. ([source](https://karpenter.sh/docs/concepts/nodeclasses/))

### System Administration & Monitoring

- [Provisioning Constraints](https://awesome-repositories.com/f/system-administration-monitoring/hardware-compatibility-checkers/provisioning-constraints.md) — Limits node creation to specific zones and architectures to ensure workloads run on compatible hardware. ([source](https://karpenter.sh/docs/concepts/nodepools/))
- [Node Health Tracking](https://awesome-repositories.com/f/system-administration-monitoring/node-health-tracking.md) — Tracks the launch, registration, and initialization status of nodes to identify provisioning failures. ([source](https://karpenter.sh/docs/concepts/nodeclaims/))
- [System Repair Tools](https://awesome-repositories.com/f/system-administration-monitoring/system-repair-tools.md) — Automatically replaces nodes with failing hardware based on cloud provider repair policies. ([source](https://karpenter.sh/docs/concepts/disruption/))
