ELMA365 On-Premises > ELMA365 On-Premises Enterprise > Продвинутое изменение параметров ELMA365 Enterprise / Размещение подов на узлах с ограничениями

Размещение подов на узлах с ограничениями

Когда нужно выделить узлы для критически важных сервисов и предотвратить рапределение на эти узлы другой нагрузки, можно использовать инструменты taints и tolerations.

С их помощью вы можете пометить узлы специальными ограничениями (taints), а поды — соответствующими разрешениями на обход ограничений (tolerations). Тогда на узлах с заданными taints запустятся только поды, для которых вы задали нужные tolerations.

Также для настройки размещения подов можно использовать:

Настройка инструментов taints и tolerations

Допустим, нужно разделить рабочую нагрузку между двумя группами узлов: для мониторинга (monitoring) и для основного приложения (elma365). Рассмотрим, как это можно реализовать:

  1. Добавьте taints:
  • на узлах, предназначенных для мониторинга:

kubectl taint nodes node-1 role=monitoring:NoSchedule

  • на узлах, предназначенных для ELMA365:

kubectl taint nodes node-1 role=elma365:NoSchedule

В команде можно указать один узел и несколько taints, разделив метки taints пробелами.

  1. В поле .Values.global.tolerations настройте tolerations, например:
  • для подов monitoring в файле values-monitoring.yaml:

global:
 tolerations:
 - key: "role"
   operator: "Equal"
   value: "monitoring"
   effect: "NoSchedule"

  • для подов elma365 в файле values-elma365.yaml:

global:
 tolerations:
 - key: "role"
   operator: "Equal"
   value: "elma365"
   effect: "NoSchedule"

Где:

  • key — имя taint;
  • operator — оператор сравнения:
    • Equal — значение taint для узла должно совпадать со значением, указанным в value;
    • Exists — в параметрах узла должен быть задан taint с указанным key. Значение value не учитывается;
  • value — значение taint, которое используется с оператором Equal;
  • effect — тип действия taint:
    • NoSchedule — под размещается на узле с taint, только если для него настроен соответствующий toleration;
    • PreferNoSchedule — предпочтительно планировать под только на тех узлах с taint, для которых настроен toleration. Однако если других узлов нет, под планируется на узел;
    • NoExecute — под не размещается на узле с заданным taint.

В этом примере поды мониторинга будут размещаться только на узлах с taint role=monitoring, а поды ELMA365 — только на узлах с taint role=elma365.

Значения по умолчанию для tolerations

По умолчанию в поле .Values.global.tolerations не заданы значения. Поэтому поды планируются на любые доступные узлы без учёта taints. Если нужно разделить рабочую нагрузку между различными типами узлов, настройте taints на узлах и соответствующие tolerations в конфигурации подов.