Skip to content
На этой странице:

Лейблы и тейнты

Механизм лейблов и селекторов позволяет выбрать строго заданные ноды для запуска конкретных подов. При этом у пользователя есть возможность запустить любые другие поды без селекторов на этих же нодах.

Механизм тейнтов и толераций, наоборот, полностью запрещает запускаться любым подам на определенных нодах. Однако, если у этих подов есть толерации к заданным на ноде тейнтам, то под будет запущен на ноде.

Особенности работы

Лейблы и тейнты Containerum присваиваются всей группе нод целиком, если их создавать из Containerum.

Лейблы и тейнты, которые были созданы напрямую в обход использования Containerum (например, с помощью kubectl), могут быть стерты с ноды при масштабировании группы нод.

Если вам необходимо применить лейбл или тейнт только к одной ноде, то рекомендуется создать отдельную группу нод с одной нодой и задать необходимый лейбл или тейнт через Containerum.

Лейблы и селекторы

Лейблы используются для группировки нод в Kubernetes. С помощью лейблов и селекторов можно управлять распределением подов по нодам кластера.

Лейбл представляет из себя пару ключ и значение. Укажите необходимые ключ и значение в разделе Лейблы при создании группы нод.

Вы можете запустить под на кластере, использовав селектор. Для этого нужно указать ту же пару ключа и значения в спецификации сервиса, в разделе nodeSelector. В таком случае поды будут запущены только на этой группе нод.

Подробнее о лейблах и селекторах можно узнать в документации Kubernetes.

Тейнты и толерации

Тейнты совместно с толерациями (tolerations) позволяют управлять распределением подов по нодам. С помощью тейнтов можно запретить определенным подам выполняться на ноде.

У тейнтов есть 3 вида эффектов:

  • NoSchedule — не запускать поды на ноде;
  • PreferNoSchedule — не запускать поды на ноде, если есть другая нода, чтобы запустить под;
  • NoExecute — остановить поды на ноде, переместить на другие ноды и больше не запускать.

Для создания тейнта укажите значения следующих параметров в разделе Taints при создании группы нод:

  • Эффект определяет поведение подов на ноде (обязательный).
  • Ключ позволяет идентифицировать тот или иной тейнт (обязательный).
  • Значение позволяет идентифицировать тот или иной тейнт по вторичному признаку (необязательный).

Тейнты можно использовать совместно с толерациями подов. В спецификации пода можно указать, какие из тейнтов данный под должен игнорировать.

В толерации можно указать указать оператор условия и признаки, по которым нужно игнорировать тот или иной тейнт. Для оператора со значением Equal нужно указать признаки effect, key и value (эффект, ключ и значение, соответственно). Для оператора со значением Exists можно указать признаки effect и/или key (эффект и ключ, соответственно).

Толерация Equal будет распространяться на все тейнты с указанными признаками. Для толерации Exists учитывайте следующее:

  • Если в толерации оставить поле key пустым, толерация будет распространяться на абсолютно все тейнты.
  • Если в толерации оставить поле effect пустым, толерация будет распространяться на все тейнты с указанным признаком key.

Примечание

Если ваша толерация должна затронуть тейнты с эффектом NoExecute, то внутри тела толерации — помимо прочего — вы можете указать tolerationSeconds. Значение этой настройки задаст длительность в секундах, в течение которой под будет выполняться на ноде.

Сервисные тейнты

Помимо пользовательских тейнтов, существуют сервисные. Например, в определенных ситуациях на нодах появляются следующие тейнты с эффектом NoExecute:

  • node.kubernetes.io/memory-pressure применяется к ноде в случае слишком высокой утилизации оперативной памяти ноды;
  • node.kubernetes.io/disk-pressure применяется к ноде в случае слишком высокой утилизации хранилища;
  • node.kubernetes.io/pid-pressure применяется к ноде в случае слишком высокой утилизации ресурсов процессом;
  • node.kubernetes.io/unschedulable применяется к ноде в случае невозможности запустить что-либо на ноде;
  • node.kubernetes.io/network-unavailable применяется к ноде в случае невозможности установить соединение с нодой.

Внимание

Толерации для сервисных тейнтов могут привести к полной неработоспособности ноды. Применяйте их на свой страх и риск, только если уверены в своих действиях.

Подробнее о тейнтах и толерациях читайте в документации Kubernetes.