Node Affinity substitui o nodeSelector com muito mais flexibilidade. Tem dois tipos: requiredDuringSchedulingIgnoredDuringExecution (obrigatório) e preferredDuringSchedulingIgnoredDuringExecution (preferencial com peso).
CASO DE USO
Pods de produção que DEVEM rodar em nodes on-demand, mas PREFEREM nodes na us-east-1a.
EXEMPLO
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-lifecycle
operator: In
values: [on-demand]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 80
preference:
matchExpressions:
- key: topology.kubernetes.io/zone
operator: In
values: [us-east-1a]💡 O sufixo IgnoredDuringExecution significa que pods já rodando NÃO são removidos se o node perder o label. Uma versão RequiredDuringExecution está planejada mas ainda não é GA.