В прошлый раз разобрали Taints и Tolerations: отсекаем лишних, пропускаем своих
Есть еще обратная сторона — Node Affinity.
Это правила в манифесте пода, которые говорят планировщику: «Хочу попасть на ноду с такими-то метками».
Своеобразная эволюция nodeSelector: та же идея, но с гибкой логикой, операторами и уровнями строгости.
💬 Чем отличается от Taints и Tolerations?
Taints & Tolerations работают от ноды: нода отталкивает всех, кто не имеет нужного toleration.
Node Affinity работает от пода: под сам тянется к нодам с нужными метками.
💬 Режимы работы
requiredDuringSchedulingIgnoredDuringExecution — жёсткое требование. Нет подходящей ноды — под уходит в Pending. Работает как nodeSelector, но с выразительным синтаксисом.preferredDuringSchedulingIgnoredDuringExecution — мягкое предпочтение. Планировщик постарается найти нужную ноду, но если не найдёт — разместит на любой доступной. Задаётся с weight от 1 до 100: чем выше — тем приоритетнее.IgnoredDuringExecution в обоих случаях означает одно: если метки на ноде изменились после запуска пода — под продолжает работать, пересчёта нет.⭐️ Пример манифеста
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disk-type
operator: In
values:
- ssd
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 80
preference:
matchExpressions:
- key: zone
operator: In
values:
- ru-east-1a
Под обязан попасть на ноду с
disk-type=ssd и предпочтительно в зону ru-east-1a.⭐️ Операторы
In / NotIn — значение входит или не входит в список.Exists / DoesNotExist — ключ есть или отсутствует на ноде.Gt / Lt — числовое сравнение значений меток, только для nodeAffinity.NotIn и DoesNotExist дают поведение anti-affinity — отталкивание через правила самого пода, без taint на ноде.💬 Когда что использовать?
— Жёстко изолировать ноды под GPU, CI-воркеры или конкретную команду → Taints + Tolerations
— Направить под на ноды с нужными характеристиками: SSD, зона, архитектура → Node Affinity
— Полный контроль над планированием → оба механизма вместе
В связке Taints держат чужих подальше, а Node Affinity точно доставляет своих куда нужно.
#заметкиИнженера
