Рейтинг:1

Существует ли «начальное выделение памяти», отличное от «предела» в Openshift/Kubernetes?

флаг cn

В java у вас есть минимальное пространство кучи (-Xms) и максимальное пространство кучи (-XMX). Минимальное пространство в куче выделяется для JVM с самого начала, «максимальное пространство в куче» — это предел, при достижении которого JVM скажет «недостаточно места в куче».

Существуют ли такие разные значения (начальное и предельное) для пода в Openshift/Kubernetes, или начальное выделение памяти по какой-то причине всегда равно предельному?

Рейтинг:1
флаг ng

В Kubernetes механизмы управления ресурсами, такими как ЦП и память, Запросы и пределы.

Запросы это то, что контейнер гарантированно получит. Если контейнер запрашивает ресурс, Kubernetes запланирует его только на узле, который может предоставить ему этот ресурс.

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

Если вы не укажете лимит ЦП:

  • Контейнер может использовать все ресурсы процессора, доступные на узле, на котором он работает, поскольку у него нет верхней границы ресурсов ЦП, которые он может использовать.
  • Контейнеру автоматически назначается ограничение по умолчанию, когда он работает в пространстве имен с ограничением ЦП по умолчанию. Если есть необходимость изменить это, можно использовать Предельный диапазон.

В ситуации, когда вы указали ограничение ЦП, но запрос ЦП не указан, Kubernetes автоматически назначает запрос ЦП, соответствующий лимиту.

Чтобы узнать больше, см. эта документация и эта статья.

Tristan avatar
флаг cn
Но я читал, что если память запросов не используется, она доступна для других контейнеров.
kkopczak avatar
флаг ng
В [этой документации](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) можно найти: «Если контейнер указывает свой собственный лимит памяти, но не указывает запрос памяти, Kubernetes автоматически назначает запрос памяти, соответствующий лимиту».
kkopczak avatar
флаг ng
Но [эта статья] (https://www.papertrail.com/solution/tips/kubernetes-logging-tips-to-avoid-memory-and-resource-issues/) должна ответить на ваш вопрос. «Без установленных запросов и ограничений поды будут просто управляться в порядке очереди. Kubernetes попытается распределить оперативную память между всеми запущенными подами поровну, но если один под попытается выделить все больше и больше памяти, Kubernetes может пнуть. отключать другие модули от узла, чтобы удовлетворить спрос. Ничто не мешает модулям потреблять всю свободную память на узле».
Tristan avatar
флаг cn
Ну, это не отвечает на вопрос, давайте просто рассмотрим вариант использования. Моя нода 2 Go, у меня есть 2 модуля, которые «запрашивают» 1 Go каждый, но потребляют только 300 Mo каждый. Разрешено ли третьему модулю повторно использовать неиспользуемую память?
kkopczak avatar
флаг ng
Извините за долгий ответ. Отвечая на ваш вопрос - третий не может этого сделать. Взгляните на [этот документ] (https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#:~:text=How%20Pods%20with,in%20request%20rate.). Здесь можно прочитать, что это невозможно из-за необходимости защиты от нехватки ресурсов на узле в случае, если впоследствии использование ресурсов увеличится.
Tristan avatar
флаг cn
Хорошо, спасибо, документация прекрасно отвечает на мой вариант использования, но теперь вот небольшая вариация: узел — 3 Go, а 3-й модуль запрашивает 1 Go, и его предел — 2 Go. Итак, запуск разрешен (сумма запросов
kkopczak avatar
флаг ng
Извините, я не понимаю вашего вопроса. Не могли бы вы объяснить это? Или, может быть, [задать новый вопрос] (https://serverfault.com/help/how-to-ask)?
Tristan avatar
флаг cn
ну, это просто конкретный пример, иллюстрирующий основной вопрос: мой узел - 3 Go, у меня есть 2 модуля, которые «запрашивают» 1 Go каждый, но потребляют только 300 Mo каждый. Теперь 3-й модуль запрашивает 1 Go, и его ограничение составляет 2 Go. Итак, запуск разрешен (сумма запросов
Wytrzymały Wiktor avatar
флаг it
Привет @Тристан. Рассмотрите возможность описания этого варианта использования в отдельном вопросе. Это было бы намного более доступным и понятным для остального сообщества, чтобы помочь вам.

Ответить или комментировать

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