View a markdown version of this page

Assistenza Karpenter - Guida per l'utente di Eksctl

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Assistenza Karpenter

eksctlfornisce supporto per aggiungere Karpenter a un cluster appena creato. Creerà tutti i prerequisiti necessari descritti nella sezione Guida introduttiva di Karpenter, inclusa l'installazione di Karpenter stesso tramite Helm. Al 0.28.0+ momento supportiamo l'installazione delle versioni. Consulta la sezione sulla compatibilità di Karpenter per ulteriori dettagli.

La seguente configurazione del cluster delinea una tipica installazione di 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

La versione è la versione di Karpenter in quanto può essere trovata nel loro Helm Repository. È inoltre possibile impostare le seguenti opzioni:

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

È necessario definire OIDC per installare Karpenter.

Una volta installato correttamente Karpenter, aggiungi NodePool(s) e NodeClass(es) per consentire a Karpenter di iniziare ad aggiungere nodi al cluster.

La nodeClassRef sezione NodePool 's' deve corrispondere al nome di un. EC2NodeClass Esempio:

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

Nota che devi specificare uno dei role o instanceProfile per i nodi di avvio. Se scegli di utilizzare instanceProfile il nome del profilo creato da eksctl segue lo schema:eksctl-KarpenterNodeInstanceProfile-<cluster-name>.

Etichettatura automatica dei gruppi di sicurezza

eksctletichetta automaticamente il gruppo di sicurezza del nodo condiviso del cluster con karpenter.sh/discovery quando sia Karpenter è abilitato (karpenter.versionspecificato) sia il karpenter.sh/discovery tag è presente in. metadata.tags Ciò consente la compatibilità con AWS Load Balancer Controller.

Nota: con karpenter 0.32.0+, i Provisioner sono stati resi obsoleti e sostituiti da. NodePool