

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à.

# Selettore di istanze
<a name="instance-selector"></a>

eksctl supporta la specificazione di più tipi di istanze per gruppi di nodi gestiti e autogestiti, ma con oltre 270 tipi di istanze EC2, gli utenti devono dedicare del tempo a capire quali tipi di istanza sarebbero adatti al loro nodegroup. È ancora più difficile quando si utilizzano le istanze Spot perché è necessario scegliere un set di istanze che funzionino bene con Cluster Autoscaler.

eksctl ora si integra con il selettore di istanze [ EC2](https://github.com/aws/amazon-ec2-instance-selector), che risolve questo problema generando un elenco di tipi di istanze in base a criteri di risorse: vCPU, memoria, numero di GPU e architettura della CPU. Quando vengono passati i criteri del selettore di istanza, eksctl crea un nodegroup con i tipi di istanza impostati sui tipi di istanza che corrispondono ai criteri forniti.

## Crea cluster e nodegroup
<a name="_create_cluster_and_nodegroups"></a>

Per creare un cluster con un singolo nodegroup che utilizza i tipi di istanza corrispondenti ai criteri di risorsa del selettore di istanze passati a eksctl, esegui

```
eksctl create cluster --instance-selector-vcpus=2 --instance-selector-memory=4
```

Questo creerà un cluster e un nodegroup gestito con il `instanceTypes` campo impostato su `[c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium]` (il set di tipi di istanza restituiti potrebbe cambiare).

Per i gruppi di nodi non gestiti, il `instancesDistribution.instanceTypes` campo verrà impostato:

```
eksctl create cluster --managed=false --instance-selector-vcpus=2 --instance-selector-memory=4
```

I criteri di selezione delle istanze possono essere specificati anche in: ClusterConfig

```
# instance-selector-cluster.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster
  region: us-west-2

nodeGroups:
- name: ng
  instanceSelector:
    vCPUs: 2
    memory: "4" # 4 GiB, unit defaults to GiB

managedNodeGroups:
- name: mng
  instanceSelector:
    vCPUs: 2
    memory: 2GiB #
    cpuArchitecture: x86_64 # default value
```

```
eksctl create cluster -f instance-selector-cluster.yaml
```

Le seguenti opzioni CLI del selettore di istanze sono supportate da e: `eksctl create cluster` `eksctl create nodegroup`

 `--instance-selector-vcpus`,, e `--instance-selector-memory` `--instance-selector-gpus` `instance-selector-cpu-architecture` 

Un file di esempio può essere trovato [ qui](https://github.com/eksctl-io/eksctl/blob/main/examples/28-instance-selector.yaml).

### Corsa a secco
<a name="_dry_run"></a>

La [ funzionalità ](dry-run.md) dry-run consente di ispezionare e modificare le istanze corrispondenti al selettore di istanze prima di procedere alla creazione di un nodegroup.

```
eksctl create cluster --name development --instance-selector-vcpus=2 --instance-selector-memory=4 --dry-run

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
# ...
managedNodeGroups:
- amiFamily: AmazonLinux2
  instanceSelector:
    memory: "4"
    vCPUs: 2
  instanceTypes:
  - c5.large
  - c5a.large
  - c5ad.large
  - c5d.large
  - t2.medium
  - t3.medium
  - t3a.medium
...
# other config
```

Il generato può quindi essere passato a: ClusterConfig `eksctl create cluster`

```
eksctl create cluster -f generated-cluster.yaml
```

Il `instanceSelector` campo che rappresenta le opzioni CLI verrà inoltre aggiunto al ClusterConfig file per scopi di visibilità e documentazione. Quando `--dry-run` viene omesso, questo campo verrà ignorato e il `instanceTypes` campo verrà utilizzato, altrimenti qualsiasi modifica `instanceTypes` verrebbe sovrascritta da eksctl.

Quando un ClusterConfig file viene passato con`--dry-run`, eksctl produrrà un ClusterConfig file contenente lo stesso set di nodegroup dopo aver espanso i criteri delle risorse del selettore di istanze di ciascun nodegroup.

```
# instance-selector-cluster.yaml
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster
  region: us-west-2

nodeGroups:
- name: ng
  instanceSelector:
    vCPUs: 2
    memory: 4 # 4 GiB, unit defaults to GiB

managedNodeGroups:
- name: mng
  instanceSelector:
    vCPUs: 2
    memory: 2GiB #
    cpuArchitecture: x86_64 # default value
```

```
eksctl create cluster -f instance-selector-cluster.yaml --dry-run

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
# ...
managedNodeGroups:
- amiFamily: AmazonLinux2
  # ...
  instanceSelector:
    cpuArchitecture: x86_64
    memory: 2GiB
    vCPUs: 2
  instanceTypes:
  - t3.small
  - t3a.small
nodeGroups:
- amiFamily: AmazonLinux2
  # ...
  instanceSelector:
    memory: "4"
    vCPUs: 2
  instanceType: mixed
  instancesDistribution:
    capacityRebalance: false
    instanceTypes:
    - c5.large
    - c5a.large
    - c5ad.large
    - c5d.large
    - t2.medium
    - t3.medium
    - t3a.medium
# ...
```