

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

# Trabalhe com grupos de nós
<a name="general-nodegroups"></a>

## Criação de grupos de nós
<a name="_creating_nodegroups"></a>

Você pode adicionar um ou mais grupos de nós além do grupo de nós inicial criado junto com o cluster.

Para criar um grupo de nós adicional, use:

```
eksctl create nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

**nota**  
 `--version`O sinalizador não é compatível com grupos de nós gerenciados. Ele sempre herda a versão do plano de controle.

Por padrão, novos grupos de nós não gerenciados herdam a versão do plano de controle (`--version=auto`), mas você pode especificar uma versão diferente, que também pode ser usada `--version=latest` para forçar o uso da versão mais recente.

Além disso, você pode usar o mesmo arquivo de configuração usado para`eksctl create cluster`:

```
eksctl create nodegroup --config-file=<path>
```

### Criando um grupo de nós a partir de um arquivo de configuração
<a name="_creating_a_nodegroup_from_a_config_file"></a>

Os grupos de nós também podem ser criados por meio de uma definição de cluster ou arquivo de configuração. Dado o seguinte exemplo de arquivo de configuração e um cluster existente chamado`dev-cluster`:

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

metadata:
  name: dev-cluster
  region: eu-north-1

managedNodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: m5.xlarge
    desiredCapacity: 10
    volumeSize: 80
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    volumeSize: 100
    privateNetworking: true
```

Os grupos de nós `ng-1-workers` e `ng-2-builders` podem ser criados com este comando:

```
eksctl create nodegroup --config-file=dev-cluster.yaml
```

#### Balanceamento de carga
<a name="_load_balancing"></a>

Se você já se preparou para anexar os or/and grupos-alvo dos balanceadores de carga clássicos existentes aos grupos de nós, você pode especificá-los no arquivo de configuração. Os or/and grupos-alvo dos balanceadores de carga clássicos são automaticamente associados ao ASG ao criar grupos de nós. Isso só é suportado para grupos de nós autogerenciados definidos por meio do campo. `nodeGroups`

```
# dev-cluster-with-lb.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: eu-north-1

nodeGroups:
  - name: ng-1-web
    labels: { role: web }
    instanceType: m5.xlarge
    desiredCapacity: 10
    privateNetworking: true
    classicLoadBalancerNames:
      - dev-clb-1
      - dev-clb-2
    asgMetricsCollection:
      - granularity: 1Minute
        metrics:
          - GroupMinSize
          - GroupMaxSize
          - GroupDesiredCapacity
          - GroupInServiceInstances
          - GroupPendingInstances
          - GroupStandbyInstances
          - GroupTerminatingInstances
          - GroupTotalInstances
  - name: ng-2-api
    labels: { role: api }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    privateNetworking: true
    targetGroupARNs:
      - arn:aws:elasticloadbalancing:eu-north-1:01234567890:targetgroup/dev-target-group-1/abcdef0123456789
```

## Seleção de grupos de nós em arquivos de configuração
<a name="_nodegroup_selection_in_config_files"></a>

Para realizar uma `delete` operação `create` or em apenas um subconjunto dos grupos de nós especificados em um arquivo de configuração, há dois sinalizadores CLI que aceitam uma lista de globs e, por exemplo: `0` `1`

```
eksctl create nodegroup --config-file=<path> --include='ng-prod-*-??' --exclude='ng-test-1-ml-a,ng-test-2-?'
```

Usando o arquivo de configuração de exemplo acima, é possível criar todos os grupos de nós de trabalhadores, exceto o de trabalhadores, com o seguinte comando:

```
eksctl create nodegroup --config-file=dev-cluster.yaml --exclude=ng-1-workers
```

Ou pode-se excluir o grupo de nós do construtor com:

```
eksctl delete nodegroup --config-file=dev-cluster.yaml --include=ng-2-builders --approve
```

Nesse caso, também precisamos fornecer o `--approve` comando para realmente excluir o grupo de nós.

### Incluir e excluir regras
<a name="node-include"></a>
+ se não `--include` ou `--exclude` for especificado, tudo está incluído
+ se only `--include` for especificado, somente grupos de nós que correspondam a esses globos serão incluídos
+ se apenas `--exclude` for especificado, todos os grupos de nós que não correspondem a esses globos serão incluídos
+ se ambos forem especificados, `--exclude` as regras terão precedência `--include` (ou seja, grupos de nós que correspondam às regras em ambos os grupos serão excluídos)

## Listando grupos de nós
<a name="_listing_nodegroups"></a>

Para listar os detalhes sobre um grupo de nós ou todos os grupos de nós, use:

```
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

Para listar um ou mais grupos de nós no formato YAML ou JSON, que gera mais informações do que a tabela de log padrão, use:

```
# YAML format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=yaml

# JSON format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=json
```

## Imutabilidade do grupo de nós
<a name="_nodegroup_immutability"></a>

Por design, os grupos de nós são imutáveis. Isso significa que, se você precisar alterar algo (além do escalonamento), como a AMI ou o tipo de instância de um grupo de nós, precisará criar um novo grupo de nós com as alterações desejadas, mover a carga e excluir o antigo. Consulte a seção [Excluindo e drenando grupos](#nodegroup-delete) de nós.

## Escalando grupos de nós
<a name="_scaling_nodegroups"></a>

O escalonamento de grupos de nós é um processo que pode levar alguns minutos. Quando a `--wait` bandeira não é especificada, espera com `eksctl` otimismo que o grupo de nós seja escalado e retorne assim que a solicitação da API da AWS for enviada. Para `eksctl` esperar até que os nós estejam disponíveis, adicione um `--wait` sinalizador como no exemplo abaixo.

**nota**  
Escalar um grupo de nós down/in (ou seja, reduzir o número de nós) pode resultar em erros, pois dependemos apenas de alterações no ASG. Isso significa que os nós que removed/terminated estão sendo não estão explicitamente drenados. Essa pode ser uma área que pode ser melhorada no futuro.

O escalonamento de um grupo de nós gerenciados é obtido chamando diretamente a API EKS, que atualiza a configuração de um grupo de nós gerenciados.

### Dimensionando um único grupo de nós
<a name="_scaling_a_single_nodegroup"></a>

Um grupo de nós pode ser escalado usando o comando: `eksctl scale nodegroup`

```
eksctl scale nodegroup --cluster=<clusterName> --nodes=<desiredCount> --name=<nodegroupName> [ --nodes-min=<minSize> ] [ --nodes-max=<maxSize> ] --wait
```

Por exemplo, para escalar o grupo de nós `ng-a345f4e1` em `cluster-1` até 5 nós, execute:

```
eksctl scale nodegroup --cluster=cluster-1 --nodes=5 ng-a345f4e1
```

Um grupo de nós também pode ser escalado usando um arquivo de configuração passado `--config-file` e especificando o nome do grupo de nós com o qual deve ser escalado. `--name` O Eksctl pesquisará o arquivo de configuração e descobrirá esse grupo de nós, bem como seus valores de configuração de escala.

Se o número desejado de nós estiver `NOT` dentro da faixa do número mínimo atual e do número máximo atual, um erro específico será mostrado. Esses valores também podem ser passados com sinalizadores `--nodes-min` e `--nodes-max` respectivamente.

### Dimensionando vários grupos de nós
<a name="_scaling_multiple_nodegroups"></a>

O Eksctl pode descobrir e escalar todos os grupos de nós encontrados em um arquivo de configuração que é passado com. `--config-file`

Da mesma forma que escalar um único grupo de nós, o mesmo conjunto de validações se aplica a cada grupo de nós. Por exemplo, o número desejado de nós deve estar dentro da faixa do número mínimo e máximo de nós.

## Excluindo e drenando grupos de nós
<a name="nodegroup-delete"></a>

Para excluir um grupo de nós, execute:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

 As [regras de inclusão e exclusão](#node-include) também podem ser usadas com esse comando.

**nota**  
Isso drenará todos os pods desse grupo de nós antes que as instâncias sejam excluídas.

Para ignorar as regras de despejo durante o processo de drenagem, execute:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Todos os nós são isolados e todos os pods são removidos de um grupo de nós na exclusão, mas se você precisar drenar um grupo de nós sem excluí-lo, execute:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

Para desconectar o fio em um grupo de nós, execute:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --undo
```

Para ignorar as regras de despejo, como PodDisruptionBudget configurações, execute:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Para acelerar o processo de drenagem, você pode especificar `--parallel <value>` o número de nós a serem drenados em paralelo.

## Outros recursos
<a name="_other_features"></a>

Você também pode ativar o acesso SSH, ASG e outros recursos para um grupo de nós, por exemplo:

```
eksctl create nodegroup --cluster=cluster-1 --node-labels="autoscaling=enabled,purpose=ci-worker" --asg-access --full-ecr-access --ssh-access
```

### Atualizar rótulos
<a name="_update_labels"></a>

Não há comandos específicos `eksctl` para atualizar os rótulos de um grupo de nós, mas isso pode ser facilmente obtido usando`kubectl`, por exemplo:

```
kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo
```

### Acesso SSH
<a name="_ssh_access"></a>

Você pode habilitar o acesso SSH para grupos de nós configurando um dos `publicKeyName` e `publicKeyPath` em sua configuração de `publicKey` grupo de nós. Como alternativa, você pode usar o [AWS Systems Manager (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli) para fazer SSH nos nós, configurando o grupo de nós com: `enableSsm`

```
managedNodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import public key from file
      publicKeyPath: ~/.ssh/id_rsa_tests.pub
  - name: ng-2
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # use existing EC2 key
      publicKeyName: ec2_dev_key
  - name: ng-3
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import inline public key
      publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqZEdzvHnK/GVP8nLngRHu/GDi/3PeES7+Bx6l3koXn/Oi/UmM9/jcW5XGziZ/oe1cPJ777eZV7muEvXg5ZMQBrYxUtYCdvd8Rt6DIoSqDLsIPqbuuNlQoBHq/PU2IjpWnp/wrJQXMk94IIrGjY8QHfCnpuMENCucVaifgAhwyeyuO5KiqUmD8E0RmcsotHKBV9X8H5eqLXd8zMQaPl+Ub7j5PG+9KftQu0F/QhdFvpSLsHaxvBzA5nhIltjkaFcwGQnD1rpCM3+UnQE7Izoa5Yt1xoUWRwnF+L2TKovW7+bYQ1kxsuuiX149jXTCJDVjkYCqi7HkrXYqcC1sbsror someuser@hostname"
  - name: ng-4
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # enable SSH using SSM
      enableSsm: true
```