Недостаточно процессора в многоузловом кластере Kubernetes - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь развернуть приложение в моем кластере Kubernetes.Это многоузловой кластер.Есть 3 m4.2xlrge экземпляры aws.

m4.2xlarge
vCPU :- 8
Memory :- 32

Теперь, в моем deployment.yaml файле для этой службы, я упомянул

limit:
  cpu: 11
request:
  cpu: 11

Это дает ошибку, insufficient cpu иКонтейнер не является расписанием.У меня уже есть ресурсы (8*3)=24 CPU, и я запросил 11 CPU из него.Он должен распределять ресурсы процессора между узлами.Подходит ли ЦП limit и request для контейнеров на узел?Это означает, что я должен иметь по крайней мере 11 ЦП на экземпляр AWS?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Когда вы указываете limit или request для модуля, он учитывает емкость ЦП или памяти для каждого узла.Другими словами, у вас не может быть модуля, запрашивающего больше ЦП или памяти, который доступен на одном рабочем узле вашего кластера, если вы это сделаете, он перейдет в состояние Pending и не появится, пока не найдет узел, соответствующийrequest модуля.

В вашем случае рабочий узел размером m4.2xlarge имеет 8 виртуальных ЦП, и в файле развертывания вы запросили 11 виртуальных ЦП для модуля.Это никогда не сработает, даже если у вас есть 3 узла размером m4.2xlarge.Модуль всегда назначается для одного рабочего узла, поэтому не имеет значения, если совокупная емкость ЦП вашего кластера превышает 11 виртуальных ЦП, поскольку модуль может потреблять ресурсы только с одного рабочего узла.

Надеюсь, это поможет!

0 голосов
/ 12 декабря 2018

Подача запланирована на одном узле.Ресурс requests: поможет решить, где его можно запланировать.Если вы скажете requests: {cpu: 11}, то должен быть какой-то один узел с 11 (незарезервированными) доступными ядрами;но если в вашем кластере есть только 8-ядерные узлы m4.2xlarge, ни один узел не сможет это поддерживать.Kubernetes не может «агрегировать» ядра между узлами любым полезным способом на этом уровне.

Если вы запрашиваете много ЦП, потому что у вашего процесса много потоков для одновременной обработки, подумайте об изменении числапотоков (возможно, даже до 1), но затем изменив replicas: в спецификации развертывания, чтобы запустить много копий.Каждый отдельный модуль будет запланирован на одном узле, но с множеством реплик вы получите много модулей, которые можно распределить по трем узлам.

Если вашему процессу действительно требуется более 8 ядер, то вынужны отдельные системы с более чем 8 ядрами;рассмотрите увеличение m4.4x (то же самое отношение ОЗУ к ЦП) или увеличение c4.4 (то же самое общее ОЗУ, вдвое больше ядер).

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