Можно ограничить размещение подов на конкретных узлах при помощи параметра nodeSelector. Это простой инструмент Kubernetes, который позволяет назначать поды только на узлы с определёнными метками.
Перед настройкой параметра nodeSelector ознакомьтесь со всеми инструментами для размещения подов и с рекомендациями по их совместному использованию в статье «Продвинутые параметры ELMA365 Enterprise».
Настройка параметра nodeSelector для выбора узлов размещения
Для базового размещения подов на узлах при помощи параметра nodeSelector выполните шаги:
- Добавьте метки (labels) на узлах.
Чтобы размещать поды в определённых узлах Kubernetes-кластера, задайте метки для нужных узлов, напримерenvironment = production. - Настройте проверку совпадения меток.
В манифесте пода укажитеnodeSelectorс заданными метками. Если на узле нет соответствующей метки, под не планируется на этот узел.
Рассмотрим пример. Допустим, настроено два окружения: develop и production. Нагрузка production-окружения распределяется на узле node-1, develop-окружения — на node-2. Для этого:
- Добавьте на узлы метки окружения:
environment = productionна узел node-1;environment = developна узел node-2.
Для этого выполните команды:
kubectl label nodes node-1 environment=production
kubectl label nodes node-2 environment=development
- Укажите для подов созданные метки, чтобы они запускались в нужных узлах. В каждом окружении откройте файл
values-elma365.yamlи задайте значение для параметраnodeSelector:
- для production-окружения:
global:
nodeSelector:
environment: production
- для develop-окружения:
global:
nodeSelector:
environment: develop
- После настройки параметра примените его, как указано в статье «Изменение параметров ELMA365 Enterprise».
В результате:
- Все поды с конфигурацией
environment = productionзапустятся только на узлах с меткойenvironment = production. - Все поды с конфигурацией
environment = developзапустятся только на узлах с меткойenvironment = develop.
Значения по умолчанию для параметра nodeSelector
По умолчанию в поле .Values.global.nodeSelector не заданы значения. Поэтому поды распределяются на любые доступные узлы кластера без ограничений.