Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Support pour charpentiers
eksctlfournit un support pour ajouter Karpenter0.28.0+. Consultez la section sur la compatibilité avec Karpenter
La configuration de cluster suivante décrit une installation Karpenter typique :
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
La version est la version de Karpenter telle qu'elle se trouve dans leur référentiel Helm. Les options suivantes peuvent également être définies :
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
L'OIDC doit être défini pour installer Karpenter.
Une fois Karpenter correctement installé, ajoutez NodePool(s)
La NodePool nodeClassRef section 'doit correspondre au nom d'unEC2NodeClass. Exemples :
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
Notez que vous devez spécifier l'un role ou instanceProfile l'autre des nœuds de lancement. Si vous choisissez d'utiliser instanceProfile le nom du profil créé, eksctl suivez le modèle :eksctl-KarpenterNodeInstanceProfile-<cluster-name>.
Marquage automatique des groupes de sécurité
eksctlbalise automatiquement le groupe de sécurité du nœud partagé du cluster karpenter.sh/discovery lorsque Karpenter est activé (karpenter.versionspécifié) et que le karpenter.sh/discovery tag existe dansmetadata.tags. Cela permet la compatibilité avec AWS Load Balancer Controller.
Remarque : avec Karpenter 0.32.0+, les Provisioners sont devenus obsolètes et remplacés par. NodePool