Utilize rótulos de nó e o campo nodeSelector para direcionar pods a nós específicos no seu cluster ACK. Por padrão, o agendador do Kubernetes distribui os pods automaticamente. Use o nodeSelector quando as cargas de trabalho exigirem hardware específico — como nós com GPU para tarefas de machine learning, nós com SSD para bancos de dados intensivos em I/O ou nós dedicados para colocalização de serviços sensíveis à latência.
O nodeSelector representa a restrição de agendamento mais simples. Diferentemente de taints e tolerations, ele não impede que outros pods sejam executados no mesmo nó — apenas controla onde os pods alvo podem ser alocados. Para obter isolamento mais rigoroso ou regras mais expressivas, utilize afinidade de nó ou afinidade entre pods.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster gerenciado ACK ou um cluster dedicado ACK (não é mais possível criar novos clusters dedicados ACK)
Uma carga de trabalho sem estado (Deployment) ou uma carga de trabalho com estado (StatefulSet) pronta para implantação
Etapa 1: Adicionar um rótulo ao nó
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, escolha Nodes > Nodes.
No canto superior direito da página, clique em Manage Labels and Taints. Na aba Labels, adicione um rótulo ao nó de destino. Neste exemplo, defina o campo Name como
pode Value comonginx. Para mais detalhes, consulte Crie e gerencie rótulos de nó.
Etapa 2: Implantar com nodeSelector
Acesse o console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, selecione o nome do seu cluster. No painel de navegação à esquerda, escolha Workloads > Deployments.
-
Na página Deployments, clique em Create from YAML e aplique o manifesto abaixo. O campo
nodeSelectorrestringe os pods aos nós que possuem o rótulopod: nginx.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: pod: nginx # Pods are scheduled only to nodes with this label. containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 De volta à página Deployments, clique no nome do Deployment criado. Na aba Pods, verifique a coluna de nó de cada pod. Todos devem estar em execução nos nós com o rótulo
pod: nginx. Caso algum pod esteja em um nó diferente, confirme se o rótulo foi aplicado corretamente na Etapa 1.
Próximos passos
Para consultar a referência completa sobre
nodeSelectore outros métodos de atribuição de nós, veja Assigning Pods to Nodes.Se precisar controlar a ordem de agendamento dos pods e configure redução reversa durante implantações e operações de expansão, consulte Personalizar agendamento prioritário de recursos elásticos.