Post

Kubernetes 101: Node Selector

Fala galera! Seis tão baum?

No Kubernetes, controlar onde os pods serão agendados é essencial para garantir a distribuição correta das cargas de trabalho. Nos artigos anteriores, exploramos Taints e Tolerations e Node Affinity, que oferecem formas avançadas de influenciar o agendamento dos pods. Agora, vamos falar sobre uma abordagem mais simples: o Node Selector.

O Node Selector é a maneira mais básica de restringir onde um pod será executado, permitindo que você especifique diretamente um rótulo (label) que o nó deve possuir para receber o pod.

O que é Node Selector?

O Node Selector funciona ao vincular pods a nós específicos com base em labels. Quando um Node Selector é definido em um pod, o agendador do Kubernetes só o colocará em um nó que possua a label correspondente.

Diferente do Node Affinity — que permite regras mais complexas e preferências — o Node Selector é direto e binário: ou o nó tem a label correta ou não tem.

Exemplo de Node Selector

Vamos adicionar um Node Selector a um pod para garantir que ele só seja agendado em nós com a label disktype=ssd.

Passo 1: Adicionar um Label ao Nó

1
kubectl label nodes node1 disktype=ssd

Isso adiciona a label disktype=ssd ao nó node1.

Passo 2: Criar um Deployment com Node Selector

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Pod
metadata:
  name: meu-pod
spec:
  nodeSelector:
    disktype: ssd
  containers:
  - name: meu-container
    image: nginx

Nesse exemplo, o pod só será agendado em um nó que tenha a label disktype=ssd. Caso nenhum nó tenha essa label, o pod ficará em estado Pending.

Comparação: Node Selector vs. Node Affinity

Enquanto o Node Selector é simples e direto, o Node Affinity oferece muito mais flexibilidade para definir como os pods são agendados. Veja o comparativo:

CaracterísticaNode SelectorNode Affinity
PropósitoDirecionar pods para nós específicos com base em labelsRegras avançadas para agendamento baseado em labels
ConfiguraçãoSimples, via nodeSelectorFlexível, via required ou preferred
Força da RestriçãoBinário: ou o nó tem o label ou nãoPode ser obrigatório ou preferencial
Uso ComumConfigurações simples de agendamentoDistribuição avançada de workloads, combinando múltiplas regras

Quando Usar cada Um?

  • Node Selector: Para casos simples onde você só precisa garantir que um pod rode em nós com uma label específica.
  • Node Affinity: Quando você precisa de regras mais avançadas, como definir preferências ou combinar múltiplos critérios.

Conclusão

O Node Selector é uma ferramenta útil para cenários simples de agendamento no Kubernetes. Se você precisa de mais controle e flexibilidade, Node Affinity é a solução ideal. Escolher a ferramenta correta depende do nível de complexidade necessário para o seu cluster.

Resumo dos Benefícios:

  • Fácil de configurar, direto ao ponto.
  • Ideal para regras simples de agendamento.
  • Um primeiro passo antes de avançar para Node Affinity.

Lembre-se de sempre testar seus workloads e avaliar qual abordagem se encaixa melhor nas necessidades da sua infraestrutura.

Você pode acessar a documentação oficial aqui: nodeSelector

É isso, galera! Se você gostou do artigo, comenta ou mande pra galera que também quer aprender Kubernetes!

Se você tiver alguma dúvida ou comentário, sinta-se à vontade para compartilhá-los conosco na seção de comentários abaixo!

Forte Abraço!

Este post está licenciado sob CC BY 4.0 e pelo autor.