Можно ограничить размещение подов на конкретных узлах при помощи параметра nodeSelector
. Это простой инструмент Kubernetes, который позволяет назначать поды только на узлы с определёнными метками.
Также для настройки размещения подов можно использовать:
- параметры nodeAffinity и podAntiAffinity — задать гибкие правила для размещения подов на узлах;
- инструменты taints и tolerations — выделить узлы для критически важных сервисов и запретить другую нагрузку на них.
Настройка параметра 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
После этого:
- Все поды с конфигурацией
environment = production
запустятся только на узлах с меткойenvironment = production
. - Все поды с конфигурацией
environment = develop
запустятся только на узлах с меткойenvironment = develop
.
Этапы изменения параметра аналогичны шагам в статье «Изменение параметров ELMA365 Enterprise».
Значения по умолчанию для параметра nodeSelector
По умолчанию в поле .Values.global.nodeSelector
не заданы значения. Поэтому поды распределяются на любые доступные узлы кластера без ограничений.