Запуская 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 показалась многообещающей, но я все еще застрял.
Это то, что я пытаюсь сделать возможно?