Os nós reservados GPU-HPN no ACS são recursos de alto custo. Sem rótulos e taints, o agendador pode alocar qualquer carga de trabalho nesses nós, desperdiçando a capacidade reservada para jobs de GPU. O ACS permite anexar rótulos, anotações e taints aos nós GPU-HPN para controlar com precisão o posicionamento das cargas de trabalho, incluindo propriedades personalizadas para agendamento por afinidade.
Como funcionam rótulos e taints
Rótulos e taints oferecem controle direto sobre como o agendador do Kubernetes posiciona cargas de trabalho nos nós GPU-HPN:
Rótulos identificam os nós com pares chave-valor. Os Pods usam
nodeSelectorou regras de afinidade de nó para direcionar nós com rótulos correspondentes.Anotações associam metadados não identificadores aos nós, frequentemente utilizados por controladores e ferramentas auxiliares.
Taints repelem Pods sem tolerância correspondente. Isso impede que cargas de trabalho gerais ocupem nós GPU-HPN custosos e garante o agendamento apenas de Pods compatíveis nesses locais.
Os efeitos dos taints determinam como o agendador e o runtime reagem quando um Pod não possui tolerância correspondente:
|
Efeito |
Comportamento |
|
|
O nó não agenda novos Pods sem tolerância correspondente. Pods em execução permanecem inalterados. |
|
|
O agendador evita posicionar Pods sem tolerância correspondente, mas pode fazê-lo se não houver outros nós disponíveis. |
|
|
O sistema não agenda novos Pods sem tolerância correspondente e remove (evict) Pods em execução sem essa tolerância. |
Tipos de nós suportados
Os objetos de nó em um cluster ACS podem ser nós virtuais padrão ou nós reservados GPU-HPN. O suporte a rótulos, anotações e taints varia conforme o tipo de nó:
|
Tipo de nó |
Rótulos |
Anotações |
Taints |
|
Nós virtuais padrão |
Não suportado |
Não suportado |
Não suportado |
|
Nós reservados GPU-HPN (rótulos personalizados de nó GPU-HPN e agendador ativados) |
Qualquer chave |
Qualquer chave |
Qualquer chave |
|
Nós reservados GPU-HPN (rótulos personalizados de nó GPU-HPN e agendador não ativados) |
Apenas prefixo |
Apenas prefixo |
Apenas prefixo |
A configuração GPU-HPN node custom labels and scheduler vem ativada por padrão nas versões mais recentes do ACS. Para mais detalhes, consulte kube-scheduler .
Adicionar um rótulo a um nó GPU-HPN
O exemplo a seguir adiciona o rótulo custom.k8s.io/test-key=test-value a um nó reservado GPU-HPN.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster ACS com pelo menos um nó reservado GPU-HPN
kubectlconfigurado para conectar-se ao cluster(Caso os rótulos personalizados de nó GPU-HPN e o agendador não estejam ativados) Uma chave de rótulo com o prefixo
custom.k8s.io/— veja GPU-HPN node custom labels and scheduler
Etapas
-
Liste os nós reservados GPU-HPN no seu cluster. Por padrão, os nós GPU-HPN possuem o rótulo
alibabacloud.com/node-type=reserved, permitindo filtragem por esse valor:kubectl get node -lalibabacloud.com/node-type=reservedA saída lista todos os nós reservados GPU-HPN:
NAME STATUS ROLES AGE VERSION cn-wulanchabu-c.cr-cye8scj0ukxxxxxxxgbg Ready agent 4d20h v1.28.3-xx cn-wulanchabu-c.cr-u9mqtuqxxxxxxx9noka5 Ready agent 2d22h v1.28.3-xxCopie o nome do nó que deseja rotular.
-
Adicione o rótulo ao nó. Substitua
<node-name>pelo nome do nó obtido na etapa 1:kubectl label node <node-name> custom.k8s.io/test-key=test-valueExemplo:
kubectl label node cn-wulanchabu-c.cr-cye8scj0ukxxxxxxxgbg custom.k8s.io/test-key=test-valueA saída confirma a operação:
node/cn-wulanchabu-c.cr-cye8scj0ukxc3gkxxgbg not labeledA mensagem
not labeledé uma peculiaridade do kubectl e indica que o rótulo foi aplicado com sucesso. -
Verifique se o rótulo foi aplicado.
kubectl get node <node-name> -Lcustom.k8s.io/test-keyExemplo:
kubectl get node cn-wulanchabu-c.cr-cye8scj0ukxxxxxxxgbg -Lcustom.k8s.io/test-keyA coluna
TEST-KEYexibe o valor do rótulo:NAME STATUS ROLES AGE VERSION TEST-KEY cn-wulanchabu-c.cr-cye8scj0ukxxxxxxxgbg Ready agent 4d21h v1.28.3-xx test-value
Próximos passos
Para utilizar rótulos de nó no agendamento de cargas de trabalho, configure
nodeSelectorou regras de afinidade de nó na especificação do Pod. Consulte a documentação do Kubernetes sobre afinidade de nó.Para repelir cargas de trabalho não-GPU dos nós GPU-HPN usando taints, adicione um taint com o efeito
NoSchedulee configure as tolerâncias correspondentes nos seus Pods de GPU.Para gerenciar a configuração do agendador para nós GPU-HPN, consulte kube-scheduler.