What's Changed
- feat: upgrade karpenter to v1 by @SolarMiroslav in #14
Breaking Change
This release add support for Karpenter v1.
Warning
To upgrade to v1, you must be running a Karpenter and Karpenter CRD version between v0.33 and v0.37. If you are on an older version, you must upgrade before continuing with this guide.
In order to upgrade to v3.0.0 release, upgrade to release v2.0.0, which adds support for Karpenter v0.36. Additionally, validate that you are running at least Kubernetes 1.25. Use the compatibility matrix to confirm you are on a supported Kubernetes version.
The following section will highlight some of the major breaking changes:
-
API Rename: NodePool’s ConsolidationPolicy WhenUnderutilized is now renamed to WhenEmptyOrUnderutilized
-
Behavior Changes:
- Karpenter now adds a karpenter.sh/unregistered:NoExecute taint to nodes in injected UserData when using alias in AMISelectorTerms or non-Custom AMIFamily. When using amiFamily: Custom, users will need to add this taint into their UserData, where Karpenter will automatically remove it when provisioning nodes.
-
API Moves:
- ExpireAfter has moved from the NodePool.Spec.Disruption block to NodePool.Spec.Template.Spec, and is now a drift-able field.
- Kubelet was moved to the EC2NodeClass from the NodePool.
-
Breaking API (Manual Migration Needed):
- Ubuntu is dropped as a first class supported AMI Family
- karpenter.sh/do-not-consolidate (annotation), karpenter.sh/do-not-evict (annotation), and karpenter.sh/managed-by (tag) are all removed. karpenter.sh/managed-by, which currently stores the cluster name in its value, will be replaced by eks:eks-cluster-name. karpenter.sh/do-not-consolidate and karpenter.sh/do-not-evict are both replaced by karpenter.sh/do-not-disrupt.
- The taint used to mark nodes for disruption and termination changed from karpenter.sh/disruption=disrupting:NoSchedule to karpenter.sh/disrupted:NoSchedule. It is not recommended to tolerate this taint, however, if you were tolerating it in your applications, you’ll need to adjust your taints to reflect this.
-
Environment Variable Changes:
- LOGGING_CONFIG, ASSUME_ROLE_ARN, ASSUME_ROLE_DURATION Dropped
- LEADER_ELECT renamed to DISABLE_LEADER_ELECTION
- FEATURE_GATES.DRIFT=true was dropped and promoted to Stable, and cannot be disabled.
- Users currently opting out of drift, disabling the drift feature flag will no longer be able to do so.
-
Defaults changed:
- API: Karpenter will drop support for IMDS access from containers by default on new EC2NodeClasses by updating the default of httpPutResponseHopLimit from 2 to 1.
- API: ConsolidateAfter is required. Users couldn’t set this before with ConsolidationPolicy: WhenUnderutilized, where this is now required. Users can set it to 0 to have the same behavior as in v1beta1.
-
Updated metrics:
- The following changes have been made to Karpenter’s metrics in v1.0.0
For additional information, refer to full official v1 migration guide.
Full Changelog: v2.0.0...v3.0.0