Использование Openshift ResourceQuota, а не резервирование? - PullRequest
0 голосов
/ 08 марта 2020

Запуская Openshift 3.11 с принудительным применением ResourceQuotas и LimitRanges, я пытаюсь понять, как использовать всю квоту ЦП моего проекта на основе «фактического текущего использования», а не того, что я «зарезервировал».

В качестве простого примера, если мой вопрос не ясен:

Если у меня есть проект с ResourceQuota из 2-х ядерных процессоров

apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    limits.cpu: "2"

У меня есть несколько долго работающих контейнеров, которые часто простаивают, ожидая запросов. Так что на самом деле не слишком много процессора. Когда запросы начинают появляться, я хочу, чтобы обработанный контейнер мог «лопнуть», позволяя использовать процессор до оставшейся квоты процессора, доступной в проекте, в зависимости от того, что фактически используется (у меня нет проблем с разрешением CFS 100 мс).

Мне нужно обеспечить максимальный максимум, который может иметь проект, следовательно, limit.cpu ResourceQuota. Но поэтому я должен также предоставить limit.cpu для каждого контейнера, который я создаю (явно или через значения по умолчанию LimitRange), например:

...
 spec:
      containers:
      ...
        resources:
          limits:
            cpu: "2"
          requests:
            cpu: 200m

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

Разве в моем сценарии не возможно, чтобы он освободил 200 м от квоты для каждого контейнера на основе request.cpu и вырос до 1800м? (1600 м квоты неиспользованных 2000 м + запрошенные начальные 200 м)

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

Это то, что я пытаюсь сделать возможно?

...