Есть несколько способов запланировать под в Kubernetes на конкретный узел, каждый с разным уровнем контроля и гибкости. Эти подходы варьируются от прямого указания узла до планирования на основе меток.
Самый простой способ — использовать nodeName в спецификации пода. Это напрямую назначает под конкретному узлу по имени.
nodeSelector использует метки Kubernetes для планирования подов на узлах с нужными атрибутами.
Node affinity предоставляет расширенные правила планирования и рекомендуется как замена nodeSelector.
Два типа правил affinity:
requiredDuringSchedulingIgnoredDuringExecution — жёсткое требование; под не будет запланирован, если нет подходящего узлаpreferredDuringSchedulingIgnoredDuringExecution — мягкое требование; под будет запланирован на другом узле, если предпочтительные узлы недоступныОба правила опираются на метки узлов и позволяют использовать сложную логику выбора с операторами In, NotIn, Exists и Gt.
Используй node affinity для новых деплоев — это даёт больше гибкости и в конечном счёте вытеснит nodeSelector. Выбирай nodeName только когда нужно гарантированное размещение на конкретном узле, и избегай этого для production-нагрузок, требующих отказоустойчивости.
Поле nodeName в спецификации пода заставляет под обойти scheduler Kubernetes и быть напрямую назначенным на указанный узел.
Новый — ещё не проверен сообществом
Вы