

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Receita: evitar que pods sejam agendados em nós específicos
<a name="node-taints-managed-node-groups"></a>

## Visão geral
<a name="_overview"></a>

A execução de nós com processadores especializados, como GPUs, pode ser mais cara do que a de nós executados em máquinas padrão. Para proteger esses nós de workloads que não exijam hardware especial, é possível usar os taints do Kubernetes. Os taints marcam os nós para repelir os pods que não tenham tolerâncias correspondentes, garantindo que somente workloads compatíveis sejam programadas. Para obter mais informações, consulte [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) na documentação do Kubernetes.

As taints de nós do Kubernetes podem ser aplicadas a grupos de nós gerenciados novos e existentes usando o Console de gerenciamento da AWS ou por meio da API do Amazon EKS. Esta receita mostra como aplicar taints aos grupos de nós gerenciados do Amazon EKS usando a AWS CLI. Para obter informações sobre como criar um grupo de nós com um taint usando o Console de gerenciamento da AWS, consulte [Criar um grupo de nós gerenciados para seu cluster](create-managed-node-group.md).

## Pré-requisitos
<a name="_prerequisites"></a>
+ Um [cluster existente do Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html).
+  [AWS CLI instalada e configurada](https://docs.aws.amazon.com/eks/latest/userguide/setting-up.html) com as permissões apropriadas.

## Etapas
<a name="_steps"></a>

### Etapa 1: criação de um grupo de nós com taints
<a name="_step_1_create_a_node_group_with_taints"></a>

Use o comando `aws eks create-nodegroup` para criar um novo grupo de nós gerenciados com taints. Este exemplo aplica uma taint com chave `dedicated`, valor `gpuGroup` e efeito `NO_SCHEDULE`.

```
aws eks create-nodegroup \
 --cli-input-json '
{
  "clusterName": "my-cluster",
  "nodegroupName": "node-taints-example",
  "subnets": [
     "subnet-1234567890abcdef0",
     "subnet-abcdef01234567890",
     "subnet-021345abcdef67890"
   ],
  "nodeRole": "arn:aws:iam::111122223333:role/AmazonEKSNodeRole",
  "taints": [
     {
         "key": "dedicated",
         "value": "gpuGroup",
         "effect": "NO_SCHEDULE"
     }
   ]
}'
```

Para obter mais informações e exemplos, consulte [taint](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#taint) na documentação de referência do Kubernetes.

### Etapa 2: atualizar os taints em um grupo de nós existente
<a name="_step_2_update_taints_on_an_existing_node_group"></a>

Use o comando [aws eks update-nodegroup-config](https://docs.aws.amazon.com/cli/latest/reference/eks/update-nodegroup-config.html) da AWS CLI para adicionar, remover ou substituir taints de grupos de nós gerenciados.

```
aws eks update-nodegroup-config
  --cluster-name my-cluster
  --nodegroup-name node-taints-example
  --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'
```

## Observações
<a name="_notes"></a>
+ Os taints podem ser atualizados após a criação do grupo de nós usando a API `UpdateNodegroupConfig`.
+ A chave da taint deve começar com uma letra ou um número. Pode conter letras, números, hifens (-`-`), pontos (`.`) e sublinhados (`_`). Pode ter até 63 caracteres.
+ Opcionalmente, a chave da taint pode começar com um prefixo de subdomínio DNS e um `/` único. Se começar com um prefixo de subdomínio DNS, poderá ter 253 caracteres.
+ O valor é opcional e deve começar com uma letra ou um número. Pode conter letras, números, hifens (-`-`), pontos (`.`) e sublinhados (`_`). Pode ter até 63 caracteres.
+ Ao usar o Kubernetes diretamente ou o Console de gerenciamento da AWS, o efeito do taint deve ser `NoSchedule`, `PreferNoSchedule` ou `NoExecute`. No entanto, ao usar a AWS CLI ou API, o efeito de taint deve ser `NO_SCHEDULE`, `PREFER_NO_SCHEDULE` ou `NO_EXECUTE`.
+ Um máximo de 50 taints são permitidos por grupo de nós.
+ Se os taints criados usando um grupo de nós gerenciados forem removidos manualmente de um nó, o Amazon EKS não os adicionará de volta ao nó. Isso será válido mesmo se as contaminações forem especificadas na configuração do grupo de nós gerenciados.