

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.

# Sélecteur d'instance
<a name="instance-selector"></a>

eksctl permet de spécifier plusieurs types d'instances pour les groupes de nœuds gérés et autogérés, mais avec plus de 270 types d'instances EC2, les utilisateurs doivent passer du temps à déterminer quels types d'instances conviennent le mieux à leur groupe de nœuds. C'est encore plus difficile lorsque vous utilisez des instances Spot, car vous devez choisir un ensemble d'instances qui fonctionne bien avec le Cluster Autoscaler.

eksctl s'intègre désormais au [sélecteur d'instance EC2](https://github.com/aws/amazon-ec2-instance-selector), qui résout ce problème en générant une liste de types d'instances en fonction de critères de ressources : vCPU, mémoire, nombre de GPU et architecture du processeur. Lorsque les critères de sélection d'instance sont passés, eksctl crée un groupe de nœuds avec les types d'instances définis sur les types d'instance correspondant aux critères fournis.

## Création de clusters et de groupes de nœuds
<a name="_create_cluster_and_nodegroups"></a>

Pour créer un cluster avec un seul groupe de nœuds qui utilise des types d'instances correspondant aux critères de ressources du sélecteur d'instance transmis à eksctl, exécutez

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

Cela créera un cluster et un groupe de nœuds géré avec le `instanceTypes` champ défini sur `[c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium]` (l'ensemble de types d'instances renvoyé peut changer).

Pour les groupes de nœuds non gérés, le `instancesDistribution.instanceTypes` champ sera défini comme suit :

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

Les critères du sélecteur d'instance peuvent également être spécifiés dans 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
```

Les options CLI du sélecteur d'instance suivantes sont prises en charge par `eksctl create cluster` et `eksctl create nodegroup` :

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

Vous trouverez un exemple de fichier [ici](https://github.com/eksctl-io/eksctl/blob/main/examples/28-instance-selector.yaml).

### Course à sec
<a name="_dry_run"></a>

La fonction [d'exécution à sec](dry-run.md) vous permet d'inspecter et de modifier les instances correspondant au sélecteur d'instance avant de procéder à la création d'un groupe de nœuds.

```
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
```

Le résultat généré ClusterConfig peut ensuite être transmis à `eksctl create cluster` :

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

Le `instanceSelector` champ représentant les options de la CLI sera également ajouté au ClusterConfig fichier à des fins de visibilité et de documentation. Lorsqu'il `--dry-run` est omis, ce champ sera ignoré et le `instanceTypes` champ sera utilisé, sinon toute modification `instanceTypes` sera annulée par eksctl.

Lorsqu'un ClusterConfig fichier est transmis`--dry-run`, eksctl produit un ClusterConfig fichier contenant le même ensemble de groupes de nœuds après avoir développé les critères de ressources du sélecteur d'instance de chaque groupe de nœuds.

```
# 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
# ...
```