Ресурсы сверхобеспечения стручков в ВМС Кубернетеса - PullRequest
0 голосов
/ 14 мая 2018

В настоящее время, если мы хотим использовать автоматическое масштабирование по горизонтали в кубернетах, нам нужно указать следующее для службы, которую мы хотим сделать:

   Limits:
      cpu:  150m
      memory:   150Mi
    Requests:
      cpu:      42m
      memory:       50Mi

У меня есть несколько служб, которые можно масштабировать с помощью HPA.

Можем ли мы переоценить эти услуги? Подобно тому, как добавление ресурсов этих услуг выходит за рамки общего объема ресурсов, доступных на виртуальной машине.

Обновление :: 1. Дополнительные пояснения к вопросу, 2Добавленное изображение

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

, например:

Общий доступный ЦПэто 1000 м ядер, 2 модуля с 500 м ядер запросов каждый и предел 1000 м каждый.

Во-первых, можно ли установить этот предел, например, 1000 м каждый, если общий вес составляет всего 1000 м?

Если да? Обновление 2: <Я думаю, что мы можем сделать это, как я сделал эксперимент, показанный ниже на изображении>

Over-Provisioned Cluster

Теперь, если модуль 2 не используетвсе его 500-метровые ядра ЦП и модуля 1 достигли своего общего запрошенного предела в 500 м.

может ли этот модуль теперь использовать более 500 м ядер, которые не используются 2-м ядром, поскольку ограничение установлено на 1000?

Если нет? Update2: Я думаю, это больше не действует

Тогда я думаю, что болееподготовка не может быть выполнена?

1 Ответ

0 голосов
/ 14 мая 2018

Давайте начнем с краткого объяснения Алгоритма автомасштабирования :

Один раз в 30 секунд (--horizontal-pod-autoscaler-sync-period значение по умолчанию) цикл управления автоматическим масштабированием ставит в очередь модули и собирает их загрузку ЦП. Затем он сравнивает среднее арифметическое этого значения с настроенным порогом и корректирует количество реплик в соответствии с желаемой целью использования ЦП. Загрузка ЦП - это среднее значение использования ЦП модуля за последние 1 минуту, деленное на ЦП, запрошенный модулем. В настоящее время загрузка ЦП берется из службы Heapster (должна присутствовать в kube-system пространстве имен).

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

В соответствии с вышеизложенным, у вас может быть несколько развертываний, которые нельзя масштабировать до максимального числа реплик за один и тот же период времени. Но в случае недостаточного количества ресурсов, кто первым наращивает масштаб - потребляет ресурсы, любые другие модули, которые не вписываются в оставшиеся ресурсы, не будут запланированы, пока ресурсы снова не станут свободными.

В GCP или GKE вы можете использовать autoscaler , чтобы добавлять новые узлы в кластер, когда вам нужно больше вычислительных мощностей, и удалять их при снижении нагрузки. Это поможет избежать «чрезмерного выделения ресурсов», потому что вы всегда можете иметь желаемый объем вычислительной мощности, не больше, не меньше.

Обновление: Планировщик решает, запускать ли модуль на основе доступных ресурсов, установленных по умолчанию или настроенных ограничений на пространство имен и соответствия модуля.

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

Пакет запускается с количеством ресурсов, указанных в запросе.

Например, если у вас есть 1000 ЦП на узле, и модуль запрашивает 500 с пределом 1000, планировщик знает, что доступны другие 500, даже если модуль потребляет все ресурсы до предела в данный момент. Таким образом, на узле с 1000 доступных процессоров вы можете запустить два модуля с запросом 500 и ограничением 1000 каждый.

...