Evitar que Pods seja agendado em nós específicos
A execução de nós com processadores especializados, como GPUs, pode ser mais cara do que nós executados em máquinas mais padrão. Por esse motivo, talvez você queira proteger esses nós de terem workloads que não exijam a implantação de hardware especial nesses nós. Uma maneira de fazer isso é com taints.
O Amazon EKS oferece suporte à configuração de taints do Kubernetes por meio dos grupos de nós gerenciados. Taints e as tolerâncias trabalham em conjunto para garantir que os Pods não sejam agendados em nós inapropriados. Uma ou mais taints podem ser aplicadas a um nó. Isso indica que o nó não deve aceitar Pods que não tolerem taints. As tolerâncias são aplicadas aos Pods e permitem, mas não exigem, que os Pods sejam agendados em nós com taints correspondentes. Para obter mais informações, consulte Taints e Tolerâncias
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.
-
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.
-
Veja a seguir um exemplo de criação de um grupo de nós com uma taint, usando a AWS CLI:
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 de uso, consulte taint
nota
-
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.
Você pode usar o comando aws eks update-nodegroup-config AWS da CLI para adicionar, remover ou substituir taints de grupos de nós gerenciados.