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. Using a combination of defaults and overrides, Karpenter determines the availability zone, instance type, capacity type, machine image, and scheduling constraints for pods it manages.
Come discuss Karpenter in the #provider-aws channel in the Kubernetes slack!
Check out the Docs to learn more.
Follow the setup recommendations of your cloud provider.
❗ Note: There may be backwards incompatible changes between versions when upgrading before v0.3.0. Karpenter follows Kubernetes versioning guidelines. Before upgrading, we recommend:
- Check the release notes
- Uninstall Karpenter
- Remove all nodes launched by karpenter
- Reinstall Karpenter
- Karpenter vs Kubernetes Cluster Autoscaler
- Karpenter @ Container Day, October 2021
- Karpenter @ Container Day, May 2021
- Groupless Autoscaling with Karpenter @ Kubecon, May 2021
This project is licensed under the Apache-2.0 License.