К чему относятся ограничения памяти ресурсов k8s, к кластеру или самому контейнеру? - PullRequest
1 голос
/ 01 августа 2020

К какой памяти это относится в k8s? Это общая общая память для всех контейнеров в кластере? Или это на каждый контейнер?

Если у меня 9 реплик, а мой кластер занимает 2 ГБ памяти, какой у меня запас места?

В чем разница между запросами и ограничениями?

resources:
      requests:
        cpu: 6000m
        memory: 12Gi
      limits:
        cpu: 6000m
        memory: 12Gi

1 Ответ

3 голосов
/ 01 августа 2020

requests и limits определены на уровне контейнера. Следовательно, они относятся к каждому контейнеру.

Если на узле, на котором работает Pod, достаточно доступного ресурса, возможно (и разрешено) для контейнера использовать больше ресурсов, чем указано в его запросе для этого ресурса. Однако контейнеру не разрешается использовать больше, чем его лимит ресурсов.

Например, если вы установили запрос памяти на 256 Мбайт для контейнера, и этот контейнер находится в поде, запланированном для узла с 8 Гбайт памяти и никаких других модулей, контейнер может попытаться использовать больше ОЗУ.

Если вы установите ограничение памяти в 4 ГБ для этого контейнера, кубелет (и среда выполнения контейнера) установят ограничение. Среда выполнения предотвращает использование контейнером большего количества ресурсов, чем настроено. Например: когда процесс в контейнере пытается использовать больше, чем разрешенный объем памяти, ядро ​​системы завершает процесс, который попытался выделить, с ошибкой нехватки памяти (OOM).

Когда вы создаете pod, планировщик Kubernetes выбирает узел для запуска Pod'а. Каждый узел имеет максимальную емкость для каждого из типов ресурсов: объем ЦП и памяти, которые он может предоставить для модулей. Планировщик гарантирует, что для каждого типа ресурса сумма запросов ресурсов запланированных Контейнеров будет меньше, чем емкость узла. Обратите внимание, что хотя фактическое использование памяти или ресурсов ЦП на узлах очень низкое, планировщик по-прежнему отказывается размещать Pod на узле, если проверка емкости не удалась. Это защищает от нехватки ресурсов на узле, когда использование ресурсов позже увеличивается, например, во время дневного пика частоты запросов

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

Контейнеру может быть разрешено или не разрешено превышение лимита ЦП в течение длительных периодов времени. Однако он не будет отключен из-за чрезмерной загрузки ЦП

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