

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Seletor de instâncias
<a name="instance-selector"></a>

O eksctl suporta a especificação de vários tipos de instâncias para grupos de nós gerenciados e autogerenciados, mas com mais de 270 tipos de instância do EC2, os usuários precisam gastar tempo descobrindo quais tipos de instância seriam adequados para seu grupo de nós. É ainda mais difícil usar instâncias spot porque você precisa escolher um conjunto de instâncias que funcione bem em conjunto com o autoescalador de cluster.

O eksctl agora se integra ao seletor de instâncias do [ EC2](https://github.com/aws/amazon-ec2-instance-selector), que resolve esse problema gerando uma lista de tipos de instância com base em critérios de recursos: vCPUs, memória, número de GPUs e arquitetura de CPU. Quando os critérios do seletor de instâncias são aprovados, o eksctl cria um nodegroup com os tipos de instância definidos para os tipos de instância que correspondem aos critérios fornecidos.

## Crie clusters e grupos de nós
<a name="_create_cluster_and_nodegroups"></a>

Para criar um cluster com um único nodegroup que usa tipos de instância correspondidos aos critérios de recursos do seletor de instâncias passados para eksctl, execute

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

Isso criará um cluster e um grupo de nós gerenciado com o `instanceTypes` campo definido como `[c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium]` (o conjunto de tipos de instância retornado pode mudar).

Para grupos de nós não gerenciados, o `instancesDistribution.instanceTypes` campo será definido:

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

Os critérios do seletor de instâncias também podem ser especificados em: 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
```

As seguintes opções de CLI do seletor de instâncias são suportadas por `eksctl create cluster` e: `eksctl create nodegroup`

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

Um exemplo de arquivo pode ser encontrado [ aqui](https://github.com/eksctl-io/eksctl/blob/main/examples/28-instance-selector.yaml).

### Corrida a seco
<a name="_dry_run"></a>

O [ recurso ](dry-run.md) de execução a seco permite que você inspecione e altere as instâncias correspondentes ao seletor de instâncias antes de prosseguir com a criação de um 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
```

O gerado ClusterConfig pode então ser passado para`eksctl create cluster`:

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

O `instanceSelector` campo que representa as opções da CLI também será adicionado ao ClusterConfig arquivo para fins de visibilidade e documentação. Quando `--dry-run` for omitido, esse campo será ignorado e usado, caso contrário, qualquer alteração será substituída pelo `instanceTypes` eksctl. `instanceTypes`

Quando um ClusterConfig arquivo é passado com`--dry-run`, o eksctl gera um ClusterConfig arquivo contendo o mesmo conjunto de grupos de nós depois de expandir os critérios de recursos do seletor de instâncias de cada grupo de nós.

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