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 Karpenter0.28.0+ momento supportiamo l'installazione delle versioni. Consulta la sezione sulla compatibilità di Karpenter
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)
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