karpenter

module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 26, 2021 License: Apache-2.0

README

Build Status GitHub stars GitHub forks GitHub License contributions welcome

Note: Karpenter is in active development and should be considered pre-production software. Backwards incompatible API changes are possible in future releases and support is best-effort by the Karpenter community.

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.

Karpenter optimizes for scheduling latency and utilization efficiency using two complementary control loops:

  • The allocator is a fast-acting latency-sensitive controller that is responsible for ensuring that incoming pods are scheduled as quickly as possible.
  • The reallocator is a slow-acting cost-sensitive controller that replaces nodes as pod requests and capacity prices shift over time.

Together, the allocator and reallocator maximize the availability and efficiency of your cluster.

Come discuss Karpenter in the #provider-aws channel in the Kubernetes slack!

Check out the FAQs to learn more.

Installation

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

References

Talks

License

This project is licensed under the Apache-2.0 License.

Directories

Path Synopsis
cmd
controller command
webhook command
pkg
apis
Package apis contains Kubernetes API groups.
Package apis contains Kubernetes API groups.
apis/provisioning/v1alpha5
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.sh
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.sh
cloudprovider/aws/apis/v1alpha1
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.k8s.aws
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.k8s.aws
controllers/counter
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
controllers/provisioning
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
test module
hack/cleanup module
hack/resource module
hack/soak module
tools
kompat module
logs module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL