Receita: evitar que pods sejam agendados em nós específicos - Amazon EKS

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

Visão geral

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 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 AWS Management Console 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 AWS Management Console, consulte Criar um grupo de nós gerenciados para seu cluster.

Pré-requisitos

Etapas

Etapa 1: criação de um grupo de nós com taints

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 na documentação de referência do Kubernetes.

Etapa 2: atualizar os taints em um grupo de nós existente

Use o comando aws eks update-nodegroup-config 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

  • 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 AWS Management Console, 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.