Skip to content

Commit 8cf47d7

Browse files
committed
Stable Release updates Release v1.11.0.
1 parent 537b01a commit 8cf47d7

File tree

88 files changed

+15957
-12099
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+15957
-12099
lines changed

charts/karpenter-crd/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: karpenter-crd
33
description: A Helm chart for Karpenter Custom Resource Definitions (CRDs).
44
type: application
5-
version: 1.10.0
6-
appVersion: 1.10.0
5+
version: 1.11.0
6+
appVersion: 1.11.0
77
keywords:
88
- cluster
99
- node

charts/karpenter/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ apiVersion: v2
22
name: karpenter
33
description: A Helm chart for Karpenter, an open-source node provisioning project built for Kubernetes.
44
type: application
5-
version: 1.10.0
6-
appVersion: 1.10.0
5+
version: 1.11.0
6+
appVersion: 1.11.0
77
keywords:
88
- cluster
99
- node

charts/karpenter/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
A Helm chart for Karpenter, an open-source node provisioning project built for Kubernetes.
44

5-
![Version: 1.10.0](https://img.shields.io/badge/Version-1.10.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.10.0](https://img.shields.io/badge/AppVersion-1.10.0-informational?style=flat-square)
5+
![Version: 1.11.0](https://img.shields.io/badge/Version-1.11.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.11.0](https://img.shields.io/badge/AppVersion-1.11.0-informational?style=flat-square)
66

77
## Documentation
88

@@ -15,7 +15,7 @@ You can follow the detailed installation instruction in the [documentation](http
1515
```bash
1616
helm upgrade --install --namespace karpenter --create-namespace \
1717
karpenter oci://public.ecr.aws/karpenter/karpenter \
18-
--version 1.10.0 \
18+
--version 1.11.0 \
1919
--set "serviceAccount.annotations.eks\.amazonaws\.com/role-arn=${KARPENTER_IAM_ROLE_ARN}" \
2020
--set settings.clusterName=${CLUSTER_NAME} \
2121
--set settings.interruptionQueue=${CLUSTER_NAME} \
@@ -27,13 +27,13 @@ helm upgrade --install --namespace karpenter --create-namespace \
2727
As the OCI Helm chart is signed by [Cosign](https://github.com/sigstore/cosign) as part of the release process you can verify the chart before installing it by running the following command.
2828

2929
```shell
30-
cosign verify public.ecr.aws/karpenter/karpenter:1.10.0 \
30+
cosign verify public.ecr.aws/karpenter/karpenter:1.11.0 \
3131
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
3232
--certificate-identity-regexp='https://github\.com/aws/karpenter-provider-aws/\.github/workflows/release\.yaml@.+' \
3333
--certificate-github-workflow-repository=aws/karpenter-provider-aws \
3434
--certificate-github-workflow-name=Release \
35-
--certificate-github-workflow-ref=refs/tags/v1.10.0 \
36-
--annotations version=1.10.0
35+
--certificate-github-workflow-ref=refs/tags/v1.11.0 \
36+
--annotations version=1.11.0
3737
```
3838

3939
## Values
@@ -49,9 +49,9 @@ cosign verify public.ecr.aws/karpenter/karpenter:1.10.0 \
4949
| controller.envFrom | list | `[]` | |
5050
| controller.extraVolumeMounts | list | `[]` | Additional volumeMounts for the controller container. |
5151
| controller.healthProbe.port | int | `8081` | The container port to use for http health probe. |
52-
| controller.image.digest | string | `"sha256:0c215133a37e0d8bc2515b75120d2fefa14be3f939aebc14020813cdc3c001a3"` | SHA256 digest of the controller image. |
52+
| controller.image.digest | string | `"sha256:f5691977d6f6ca3032fa61a3faefbfcfc838837d00586b40331d95bd84d55f74"` | SHA256 digest of the controller image. |
5353
| controller.image.repository | string | `"public.ecr.aws/karpenter/controller"` | Repository path to the controller image. |
54-
| controller.image.tag | string | `"1.10.0"` | Tag of the controller image. |
54+
| controller.image.tag | string | `"1.11.0"` | Tag of the controller image. |
5555
| controller.metrics.port | int | `8080` | The container port to use for metrics. |
5656
| controller.resources | object | `{}` | Resources for the controller container. |
5757
| controller.securityContext.appArmorProfile | object | `{}` | AppArmor profile for the controller container. |

charts/karpenter/values.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,9 @@ controller:
126126
# -- Repository path to the controller image.
127127
repository: public.ecr.aws/karpenter/controller
128128
# -- Tag of the controller image.
129-
tag: 1.10.0
129+
tag: 1.11.0
130130
# -- SHA256 digest of the controller image.
131-
digest: sha256:0c215133a37e0d8bc2515b75120d2fefa14be3f939aebc14020813cdc3c001a3
131+
digest: sha256:f5691977d6f6ca3032fa61a3faefbfcfc838837d00586b40331d95bd84d55f74
132132
# -- Additional environment variables for the controller pod.
133133
env: []
134134
# - name: AWS_REGION

hack/docs/compatibilitymatrix_gen/compatibility.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,8 @@ compatibility:
8686
minK8sVersion: 1.26
8787
maxK8sVersion: 1.35
8888
- appVersion: 1.10.x
89+
minK8sVersion: 1.26
90+
maxK8sVersion: 1.35
91+
- appVersion: 1.11.x
8992
minK8sVersion: 1.26
9093
maxK8sVersion: 1.35

website/content/en/docs/concepts/nodeclasses.md

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ spec:
115115
- id: cr-123
116116
- instanceMatchCriteria: open
117117

118+
# Optional, the terms are exclusive
119+
placementGroupSelector:
120+
name: my-pg
121+
id: pg-123
122+
118123
# Optional, propagates tags to underlying EC2 resources
119124
tags:
120125
team: team-a
@@ -141,6 +146,15 @@ spec:
141146
snapshotID: snap-0123456789
142147
volumeInitializationRate: 100
143148

149+
# Optional, configures the network interfaces for the instance
150+
networkInterfaces:
151+
- networkCardIndex: 0
152+
deviceIndex: 0
153+
interfaceType: "interface"
154+
- networkCardIndex: 0
155+
deviceIndex: 1
156+
interfaceType: "interface"
157+
144158
# Optional, use instance-store volumes for node ephemeral-storage
145159
instanceStorePolicy: RAID0
146160

@@ -714,7 +728,7 @@ You can provision and assign a role to an IAM instance profile using [CloudForma
714728

715729
{{% alert title="Note" color="primary" %}}
716730

717-
For [private clusters](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html) that do not have access to the public internet, using `spec.instanceProfile` is required. `spec.role` cannot be used since Karpenter needs to access IAM endpoints to manage a generated instance profile. IAM [doesn't support private endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) to enable accessing the service without going to the public internet.
731+
For [private clusters](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html) without access to their AWS region's IAM API endpoint, using `spec.instanceProfile` is required. `spec.role` cannot be used since Karpenter needs to access IAM endpoints to manage a generated instance profile. IAM [doesn't support private endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) to enable accessing the service without going to the public internet.
718732

719733
{{% /alert %}}
720734

@@ -962,6 +976,39 @@ spec:
962976
key: foo
963977
```
964978

979+
## spec.placementGroupSelector
980+
981+
Placement Group Selector allows you to select a [placement group](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html) for instances launched by this EC2NodeClass. Each EC2NodeClass maps to exactly one placement group — all instances launched from that EC2NodeClass are placed into the resolved placement group.
982+
983+
Placement groups can be selected by either name or ID. Only one of `name` or `id` may be specified.
984+
985+
Karpenter supports all three placement group strategies:
986+
- **Cluster** — instances are placed in a single AZ on the same network segment for low-latency, high-throughput networking (e.g., EFA workloads)
987+
- **Partition** — instances are distributed across isolated partitions (up to 7 per AZ) for hardware fault isolation. Applications can use `topologySpreadConstraints` with the `karpenter.k8s.aws/placement-group-partition` label to spread workloads across partitions.
988+
- **Spread** — each instance is placed on distinct hardware (up to 7 instances per AZ per group) for maximum fault isolation
989+
990+
{{% alert title="Note" color="primary" %}}
991+
The IAM role Karpenter assumes must have permissions for the [ec2:DescribePlacementGroups](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribePlacementGroups.html) action to discover placement groups and the [ec2:RunInstances](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-RunInstances) / [ec2:CreateFleet](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-CreateFleet) actions to launch instances into the placement group.
992+
{{% /alert %}}
993+
994+
#### Examples
995+
996+
Select the placement group with the given ID:
997+
998+
```yaml
999+
spec:
1000+
placementGroupSelector:
1001+
id: pg-123
1002+
```
1003+
1004+
Select the placement group with the given name:
1005+
1006+
```yaml
1007+
spec:
1008+
placementGroupSelector:
1009+
name: my-pg-a
1010+
```
1011+
9651012
## spec.tags
9661013

9671014
Karpenter adds tags to all resources it creates, including EC2 Instances, EBS volumes, and Launch Templates. The default set of tags are listed below.
@@ -1082,6 +1129,28 @@ spec:
10821129

10831130
The `Custom` AMIFamily ships without any default `blockDeviceMappings`.
10841131

1132+
## spec.networkInterfaces
1133+
1134+
The `networkInterfaces` field allows you to configure network interface attachments for instances, including support for EFA (Elastic Fabric Adapter) devices for high-performance computing and machine learning workloads. For more information see the [AWS EFA docs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).
1135+
1136+
Configure network interfaces by specifying the network card index, device index, and interface type:
1137+
1138+
```yaml
1139+
spec:
1140+
networkInterfaces:
1141+
- networkCardIndex: 0
1142+
deviceIndex: 0
1143+
interfaceType: "interface"
1144+
- networkCardIndex: 0
1145+
deviceIndex: 1
1146+
interfaceType: "efa-only"
1147+
```
1148+
1149+
### Interface Types
1150+
1151+
- __interface__: Standard ENA (Elastic Network Adapter) interface providing IP connectivity
1152+
- __efa-only__: EFA interface that provides only the EFA device for RDMA communication without consuming an IP address
1153+
10851154
## spec.instanceStorePolicy
10861155

10871156
The `instanceStorePolicy` field controls how [instance-store](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) volumes are handled. By default, Karpenter and Kubernetes will simply ignore them.

website/content/en/docs/concepts/scheduling.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ Take care to ensure the label domains are correct. A well known label like `karp
184184
| karpenter.k8s.aws/instance-local-nvme | 900 | [AWS Specific] Number of gibibytes of local nvme storage on the instance |
185185
| karpenter.k8s.aws/instance-capability-flex | true | [AWS Specific] Instance with capacity flex |
186186
| karpenter.k8s.aws/instance-tenancy | default | [AWS Specific] Tenancy types include `default`, and `dedicated` |
187+
| karpenter.k8s.aws/placement-group-id | pg-0fa32af67ed0f8da0 | [AWS Specific] The placement group ID.
188+
| karpenter.k8s.aws/placement-group-partition | 7 | [AWS Specific] The partition number of the partition placement group the instance is in.
187189
| topology.k8s.aws/zone-id | use1-az1 | [AWS Specific] Globally consistent [zone id](https://docs.aws.amazon.com/global-infrastructure/latest/regions/az-ids.html) |
188190

189191

website/content/en/docs/faq.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ See [Configuring NodePools]({{< ref "./concepts/#configuring-nodepools" >}}) for
1717
AWS is the first cloud provider supported by Karpenter, although it is designed to be used with other cloud providers as well.
1818

1919
### Can I write my own cloud provider for Karpenter?
20-
Yes, but there is no documentation yet for it. Start with Karpenter's GitHub [cloudprovider](https://github.com/aws/karpenter-provider-aws/tree/v1.10.0/pkg/cloudprovider) documentation to see how the AWS provider is built, but there are other sections of the code that will require changes too.
20+
Yes, but there is no documentation yet for it. Start with Karpenter's GitHub [cloudprovider](https://github.com/aws/karpenter-provider-aws/tree/v1.11.0/pkg/cloudprovider) documentation to see how the AWS provider is built, but there are other sections of the code that will require changes too.
2121

2222
### What operating system nodes does Karpenter deploy?
2323
Karpenter uses the OS defined by the [AMI Family in your EC2NodeClass]({{< ref "./concepts/nodeclasses#specamifamily" >}}).
@@ -29,7 +29,7 @@ Karpenter has multiple mechanisms for configuring the [operating system]({{< ref
2929
Karpenter is flexible to multi-architecture configurations using [well known labels]({{< ref "./concepts/scheduling/#supported-labels">}}).
3030

3131
### What RBAC access is required?
32-
All the required RBAC rules can be found in the Helm chart template. See [clusterrole-core.yaml](https://github.com/aws/karpenter/blob/v1.10.0/charts/karpenter/templates/clusterrole-core.yaml), [clusterrole.yaml](https://github.com/aws/karpenter/blob/v1.10.0/charts/karpenter/templates/clusterrole.yaml), [rolebinding.yaml](https://github.com/aws/karpenter/blob/v1.10.0/charts/karpenter/templates/rolebinding.yaml), and [role.yaml](https://github.com/aws/karpenter/blob/v1.10.0/charts/karpenter/templates/role.yaml) files for details.
32+
All the required RBAC rules can be found in the Helm chart template. See [clusterrole-core.yaml](https://github.com/aws/karpenter/blob/v1.11.0/charts/karpenter/templates/clusterrole-core.yaml), [clusterrole.yaml](https://github.com/aws/karpenter/blob/v1.11.0/charts/karpenter/templates/clusterrole.yaml), [rolebinding.yaml](https://github.com/aws/karpenter/blob/v1.11.0/charts/karpenter/templates/rolebinding.yaml), and [role.yaml](https://github.com/aws/karpenter/blob/v1.11.0/charts/karpenter/templates/role.yaml) files for details.
3333

3434
### Can I run Karpenter outside of a Kubernetes cluster?
3535
Yes, as long as the controller has network and IAM/RBAC access to the Kubernetes API and your provider API.

website/content/en/docs/getting-started/getting-started-with-karpenter/_index.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ After setting up the tools, set the Karpenter and Kubernetes version:
4848

4949
```bash
5050
export KARPENTER_NAMESPACE="kube-system"
51-
export KARPENTER_VERSION="1.10.0"
51+
export KARPENTER_VERSION="1.11.0"
5252
export K8S_VERSION="1.35"
5353
```
5454

@@ -115,13 +115,13 @@ See [Enabling Windows support](https://docs.aws.amazon.com/eks/latest/userguide/
115115
As the OCI Helm chart is signed by [Cosign](https://github.com/sigstore/cosign) as part of the release process you can verify the chart before installing it by running the following command.
116116

117117
```bash
118-
cosign verify public.ecr.aws/karpenter/karpenter:1.10.0 \
118+
cosign verify public.ecr.aws/karpenter/karpenter:1.11.0 \
119119
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
120120
--certificate-identity-regexp='https://github\.com/aws/karpenter-provider-aws/\.github/workflows/release\.yaml@.+' \
121121
--certificate-github-workflow-repository=aws/karpenter-provider-aws \
122122
--certificate-github-workflow-name=Release \
123-
--certificate-github-workflow-ref=refs/tags/v1.10.0 \
124-
--annotations version=1.10.0
123+
--certificate-github-workflow-ref=refs/tags/v1.11.0 \
124+
--annotations version=1.11.0
125125
```
126126

127127
{{% alert title="DNS Policy Notice" color="warning" %}}

website/content/en/docs/getting-started/getting-started-with-karpenter/cloudformation.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ Resources:
4343
"arn:${AWS::Partition}:ec2:${AWS::Region}::snapshot/*",
4444
"arn:${AWS::Partition}:ec2:${AWS::Region}:*:security-group/*",
4545
"arn:${AWS::Partition}:ec2:${AWS::Region}:*:subnet/*",
46-
"arn:${AWS::Partition}:ec2:${AWS::Region}:*:capacity-reservation/*"
46+
"arn:${AWS::Partition}:ec2:${AWS::Region}:*:capacity-reservation/*",
47+
"arn:${AWS::Partition}:ec2:${AWS::Region}:*:placement-group/*"
4748
],
4849
"Action": [
4950
"ec2:RunInstances",
@@ -315,6 +316,7 @@ Resources:
315316
"ec2:DescribeInstanceTypeOfferings",
316317
"ec2:DescribeInstanceTypes",
317318
"ec2:DescribeLaunchTemplates",
319+
"ec2:DescribePlacementGroups",
318320
"ec2:DescribeSecurityGroups",
319321
"ec2:DescribeSpotPriceHistory",
320322
"ec2:DescribeSubnets"

0 commit comments

Comments
 (0)