翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Karpenter サポート
eksctl は、新しく作成されたクラスターに Karpenter0.28.0+。詳細については、Karpenter の互換性
次のクラスター設定は、一般的な Karpenter のインストールの概要を示しています。
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster-with-karpenter region: us-west-2 version: '1.32' # requires a version of Kubernetes compatible with Karpenter tags: karpenter.sh/discovery: cluster-with-karpenter # here, it is set to the cluster name iam: withOIDC: true # required karpenter: version: '1.2.1' # Exact version should be specified according to the Karpenter compatibility matrix managedNodeGroups: - name: managed-ng-1 minSize: 1 maxSize: 2 desiredCapacity: 1
バージョンは、Helm リポジトリにある Karpenter のバージョンです。以下のオプションを設定することもできます。
karpenter: version: '1.2.1' createServiceAccount: true # default is false defaultInstanceProfile: 'KarpenterNodeInstanceProfile' # default is to use the IAM instance profile created by eksctl withSpotInterruptionQueue: true # adds all required policies and rules for supporting Spot Interruption Queue, default is false
Karpenter をインストールするには、OIDC を定義する必要があります。
Karpenter が正常にインストールされたら、NodePool (複数可)
NodePool の nodeClassRefセクションは、 の名前と一致する必要がありますEC2NodeClass。例:
apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: example annotations: kubernetes.io/description: "Example NodePool" spec: template: spec: requirements: - key: kubernetes.io/arch operator: In values: ["amd64"] - key: kubernetes.io/os operator: In values: ["linux"] - key: karpenter.sh/capacity-type operator: In values: ["on-demand"] - key: karpenter.k8s.aws/instance-category operator: In values: ["c", "m", "r"] - key: karpenter.k8s.aws/instance-generation operator: Gt values: ["2"] nodeClassRef: group: karpenter.k8s.aws kind: EC2NodeClass name: example # must match the name of an EC2NodeClass
apiVersion: karpenter.k8s.aws/v1 kind: EC2NodeClass metadata: name: example annotations: kubernetes.io/description: "Example EC2NodeClass" spec: role: "eksctl-KarpenterNodeRole-${CLUSTER_NAME}" # replace with your cluster name subnetSelectorTerms: - tags: karpenter.sh/discovery: "${CLUSTER_NAME}" # replace with your cluster name securityGroupSelectorTerms: - tags: karpenter.sh/discovery: "${CLUSTER_NAME}" # replace with your cluster name amiSelectorTerms: - alias: al2023@latest # Amazon Linux 2023
ラウチノードinstanceProfileには、 roleまたは のいずれかを指定する必要があります。によって作成されたプロファイルの名前を使用する場合はinstanceProfile、パターン eksctlに従いますeksctl-KarpenterNodeInstanceProfile-<cluster-name>。
セキュリティグループの自動タグ付け
eksctl Karpenter が有効 (karpenter.version指定) で タグが に存在するkarpenter.sh/discovery場合、クラスターの共有ノードセキュリティグループには が自動的にkarpenter.sh/discoveryタグ付けされますmetadata.tags。これにより、AWS Load Balancer Controller の互換性が有効になります。
karpenter 0.32.0 以降では、プロビジョニングは廃止され、NodePool