﻿# Размещение подов на узлах с ограничениями

> [HTML Version](taints-tolerations.html)

Когда нужно выделить узлы для критически важных сервисов и предотвратить рапределение на эти узлы другой нагрузки, можно использовать инструменты **taints** и **tolerations**. 

С их помощью вы можете пометить узлы специальными ограничениями (taints), а поды — соответствующими разрешениями на обход ограничений (tolerations). Тогда на узлах с заданными taints запустятся только поды, для которых вы задали нужные tolerations. 

Перед настройкой taints и tolerations ознакомьтесь со всеми инструментами для размещения подов и с рекомендациями по их совместному использованию в статье [«Продвинутые параметры ELMA365 Enterprise»](advanced-kubernetes-settings.md). 

## Настройка инструментов taints и tolerations

Допустим, нужно разделить рабочую нагрузку между двумя группами узлов: для мониторинга (\[OBJECT\]) и для основного приложения (\[OBJECT\]). Рассмотрим, как это можно реализовать:

1. Добавьте taints:

- на узлах, предназначенных для мониторинга:

````
kubectl taint nodes node-1 role=monitoring:NoSchedule

- ````
на узлах, предназначенных для ELMA365:

````
kubectl taint nodes node-1 role=elma365:NoSchedule

````
В команде можно указать один узел и несколько taints, разделив метки taints пробелами.

2. В поле \[OBJECT\] настройте tolerations, например:

- для подов \[OBJECT\] в файле \[OBJECT\]:

````
global:  
  tolerations:  
  - key: "role"  
    operator: "Equal"  
    value: "monitoring"  
    effect: "NoSchedule"

- ````
для подов \[OBJECT\] в файле \[OBJECT\]:

````
global:  
  tolerations:  
  - key: "role"  
    operator: "Equal"  
    value: "elma365"  
    effect: "NoSchedule````
"

Где: 

- \[OBJECT\] — имя taint;

- \[OBJECT\] — оператор сравнения: 

	- \[OBJECT\] — значение taint для узла должно совпадать со значением, указанным в \[OBJECT\];

	- \[OBJECT\] — в параметрах узла должен быть задан taint с указанным \[OBJECT\]. Значение \[OBJECT\] не учитывается;

- \[OBJECT\] — значение taint, которое используется с оператором \[OBJECT\];

- \[OBJECT\] — тип действия taint:

	- \[OBJECT\] — под размещается на узле с taint, только если для него настроен соответствующий toleration;

	- \[OBJECT\] — предпочтительно планировать под только на тех узлах с taint, для которых настроен toleration. Однако если других узлов нет, под планируется на узел;

	- \[OBJECT\] — под не размещается на узле с заданным taint.

В этом примере поды мониторинга будут размещаться только на узлах с taint \[OBJECT\], а поды ELMA365 — только на узлах с taint \[OBJECT\].

## Значения по умолчанию для tolerations

По умолчанию в поле \[OBJECT\] не заданы значения. Поэтому поды планируются на любые доступные узлы без учёта taints. Если нужно разделить рабочую нагрузку между различными типами узлов, настройте taints на узлах и соответствующие tolerations в конфигурации подов.