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
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
-
AWS CLI instalada e configurada com as permissões apropriadas.
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
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
ouNoExecute
. No entanto, ao usar a AWS CLI ou API, o efeito de taint deve serNO_SCHEDULE
,PREFER_NO_SCHEDULE
ouNO_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.