У меня есть кластер Kubernetes с множеством пулов узлов. Иногда развертывание завершается неудачей, поскольку выбранный пул узлов, который выбирает Kubernetes, не имеет достаточно доступных ресурсов.
Есть ли способ заставить Kubernetes выбрать пул узлов с объемом ресурсов, запрошенным всем набором модулей?
решение1
Вы можете ограничить Pod так, чтобы он мог работать только на определенном наборе узлов. Есть несколько способов сделать это, и рекомендуемый подход — использовать селекторы меток.
Вы можете использовать любой из следующих методов, чтобы выбрать, где Kubernetes будет планировать работу определенных модулей:
nodeSelectorсопоставление полей сметки узлов
Сродство и анти-сродство
поле nodeName
Аселектор узловопределяет карту пар ключ/значение, которые определяются с помощью пользовательских меток на узлах и селекторах, указанных в модулях.
Чтобы модуль мог работать на узле, он должен иметь тот же селектор узлов «ключ/значение», что и метка на узле.
Примечание: Вы не можете добавить селектор узлов непосредственно в существующий запланированный модуль.
nodeSelector — это самый простой способ ограничить Pod-ы узлами с определенными метками, тогда какСродство и анти-сродстворасширяет типы ограничений, которые вы можете определить. Функция affinity состоит из двух типов affinity:
- Функция привязки к узлу аналогична полю nodeSelector, но она более выразительна и позволяет задавать мягкие правила.
- Межмодульное сродство/анти-сродство позволяет вам ограничивать модули по меткам на других модулях.
Для nodename вы можетессылатьсяпо ссылке для получения более подробной информации.
Сродство узлов — это свойство Pod, которое привлекает их к набору узлов, и, как уже говорилось, nodeselector используется для ограничения Pod. Таким образом, вы можете использоватьПороки и терпимость.
Taints противоположны тем, что они позволяют узлу отталкивать набор pod. Допуски применяются к pod и позволяют pod планировать на узлах с соответствующими taints. Taints и допуски работают вместе, чтобы гарантировать, что pod не будут запланированы на неподходящих узлах. К узлу применяется один или несколько taints. Это означает, что узел должен отклонять любые pod, которые не допускают taints.
Вы можете обратиться кссылкидля получения дополнительной информации опороки и терпимость.