Upgrade Karpenter from 1.6.0 to 1.9+ (required for Kubernetes 1.36)
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 7
- Forks
- 2
- Avg merge
- 1d 15h
- Merged PRs (30d)
- 3
Description
Summary
Upgrade the default Karpenter version from 1.6.0 to 1.9+ to support the planned Kubernetes 1.36 upgrade on EKS clusters.
Why this is needed
Karpenter publishes an explicit compatibility matrix that bounds each release to a supported Kubernetes version range. Karpenter 1.6.0 (released July 2025) was built and tested for Kubernetes 1.34–1.35. It is outside the supported range for Kubernetes 1.36, which risks node provisioning failures and undefined scheduling behaviour on upgraded clusters.
Karpenter 1.9+ is the minimum version with declared Kubernetes 1.36 support.
Relevant links:
- Karpenter compatibility matrix: https://karpenter.sh/docs/upgrading/compatibility/
- Karpenter upgrade guide: https://karpenter.sh/docs/upgrading/upgrade-guide/
- Karpenter v1.9.0 release notes: https://github.com/aws/karpenter-provider-aws/releases/tag/v1.9.0
⚠️ Backward compatibility — ordering constraint
Unlike the other pre-upgrade component changes, Karpenter 1.9.x cannot be deployed in place on clusters still running Kubernetes 1.33 or 1.34. The Karpenter compatibility matrix shows:
| Karpenter version | Supported K8s range |
|---|---|
| 1.6.0 | 1.34 – 1.35 |
| 1.9.x | 1.35 – 1.36 |
This means the upgrade sequence for most EKS clusters must be:
- Upgrade Kubernetes to 1.35 (if not already there)
- Upgrade Karpenter to 1.9+
- Upgrade Kubernetes to 1.36
For any EKS cluster already running K8s 1.35, step 1 can be skipped and Karpenter can be upgraded first.
Breaking changes in the upgrade
Between Karpenter 1.6 and 1.9, review the upgrade guide for any API or configuration changes. The v1beta1 → v1 API migration (NodePool, NodeClaim, EC2NodeClass) should already be complete as of 1.6, but verify no deprecated fields are in use.
Acceptance criteria
- Default Karpenter version updated to
1.9.x(or latest compatible) inworkload.go - Upgrade sequence documented: K8s → 1.35, then Karpenter → 1.9+, then K8s → 1.36
- Verified working on a staging EKS cluster running K8s 1.35 before rolling to production
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in workload.go and inspect how the default Karpenter version is configured, then review the linked Karpenter compatibility matrix and upgrade guide for changes between 1.6 and 1.9. Confirm the upgrade sequence through Kubernetes 1.35, Karpenter 1.9+, and Kubernetes 1.36, and validate the change on a staging EKS 1.35 cluster before production rollout.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, go, kubernetes
- Domain
- cloud, devops, infrastructure
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100