Karpenter is an open-source node provisioning project built for Kubernetes. Its goal is to improve the efficiency and cost of running workloads on Kubernetes clusters. Karpenter works by:
- Watching for pods that the Kubernetes scheduler has marked as unschedulable
- Evaluating scheduling constraints (resource requests, nodeselectors, affinities, tolerations, and topology spread constraints) requested by the pods
- Provisioning nodes that meet the requirements of the pods
- Scheduling the pods to run on the new nodes
- Removing the nodes when the nodes are no longer needed
For most use cases, a cluster’s capacity can be managed by a single Karpenter Provisioner. However, you can define multiple Provisioners, enabling use cases like isolation, entitlements, and sharding. Provisioner requirements are layered with pod requirements to launch a node with the right properties, including taints, labels, availability zone, instance type, operating system, and more.
Come discuss Karpenter in the #karpenter channel in the Kubernetes slack!
Check out the Docs to learn more.
Follow the setup recommendations of your cloud provider.
- 05/19/2022 Scaling K8s Nodes Without Breaking the Bank or Your Sanity
- 03/25/2022 Karpenter @ AWS Community Day 2022
- 12/20/2021 How To Auto-Scale Kubernetes Clusters With Karpenter
- 11/30/2021 Karpenter vs Kubernetes Cluster Autoscaler
- 11/19/2021 Karpenter @ Container Day
- 05/14/2021 Groupless Autoscaling with Karpenter @ Kubecon
- 05/04/2021 Karpenter @ Container Day
This project is licensed under the Apache-2.0 License.