

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
<a name="eksctl-karpenter"></a>

 `eksctl`fornisce supporto per aggiungere [Karpenter](https://karpenter.sh/) a un cluster appena creato. Creerà tutti i prerequisiti necessari descritti nella sezione [Guida introduttiva](https://karpenter.sh/docs/getting-started/) 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](https://karpenter.sh/docs/upgrading/compatibility/) 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)](https://karpenter.sh/docs/concepts/nodeclasses/)](https://karpenter.sh/docs/concepts/nodepools/) 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
<a name="_automatic_security_group_tagging"></a>

 `eksctl`etichetta automaticamente il gruppo di sicurezza del nodo condiviso del cluster con `karpenter.sh/discovery` quando sia Karpenter è abilitato (`karpenter.version`specificato) 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\$1, i Provisioner sono stati resi obsoleti e sostituiti da. [NodePool](https://karpenter.sh/docs/concepts/nodepools/)