Распределение ресурсов в Кубернетесе: как планируются стручки? - PullRequest
0 голосов
/ 25 марта 2019

В Kubernetes роль планировщика заключается в поиске подходящего узла для модулей.Таким образом, после назначения модуля в узел на нем есть разные модули, поэтому эти модули конкурируют за получение ресурсов.Следовательно, для этой конкурентной ситуации, как Kubernetes распределяет ресурсы?Есть ли в Kubernetes исходный код для распределения вычислительных ресурсов?

1 Ответ

2 голосов
/ 25 марта 2019

Полагаю, вы можете взглянуть на приведенные ниже статьи, чтобы узнать, отвечает ли это на ваш запрос

https://github.com/eBay/Kubernetes/blob/master/docs/devel/scheduler_algorithm.md

https://jvns.ca/blog/2017/07/27/how-does-the-kubernetes-scheduler-work/

Отфильтрованныеузлы считаются подходящими для размещения Pod, и часто остается более одного узла.Kubernetes расставляет приоритеты для остальных узлов, чтобы найти «лучший» для Pod.Приоритизация выполняется набором приоритетных функций.Для каждого оставшегося узла функция приоритета дает оценку, которая масштабируется от 0 до 10, где 10 обозначает «наиболее предпочтительный» и 0 - «наименее предпочтительный».Каждая функция приоритета взвешивается положительным числом, и окончательная оценка каждого узла вычисляется путем суммирования всех взвешенных оценок.Например, предположим, что есть две приоритетные функции, priorityFunc1 и priorityFunc2 с весовыми коэффициентами weight1 и weight2 соответственно, конечная оценка некоторого NodeA равна:

finalScoreNodeA = (weight1 * priorityFunc1) + (weight2 * priorityFunc2)

После оценок всех узловрассчитываются, узел с наивысшей оценкой выбирается в качестве хоста Pod.Если имеется более одного узла с одинаковыми наивысшими баллами, выбирается случайный из них.

В настоящее время планировщик Kubernetes предоставляет некоторые практические функции приоритета, в том числе:

LeastRequestedPriority : Узел имеет приоритет по доле узла, которая была бы свободна, если бы новый Pod был запланирован на узле.(Другими словами, (емкость - сумма запросов всех блоков, уже находящихся на узле - запрос блока, который планируется) / мощность).Процессор и память одинаково взвешены.Узел с самой высокой свободной долей является наиболее предпочтительным.Обратите внимание, что эта функция приоритета имеет эффект распространения модулей по узлам в зависимости от потребления ресурсов.

CalculateNodeLabelPriority : предпочитать узлы с указанной меткой.

BalancedResourceAllocation : эта функция приоритета пытается разместить модуль на узле таким образом, чтобы после развертывания модуля баланс загрузки ЦП и памяти был сбалансирован.

CalculateSpreadPriority : распространение модулей посведение к минимуму количества модулей, принадлежащих к той же службе на том же узле.Если информация о зоне присутствует на узлах, приоритет будет отрегулирован таким образом, чтобы модули распределялись по зонам и узлам.

CalculateAntiAffinityPriority : Распределение модулей путем минимизации количества модулей, принадлежащих одному и тому жеслужба на узлах с одинаковым значением для определенной метки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...