ГлавнаяОперационные системыLinuxКак ограничить ресурсы, которые может использовать контейнер LXD

Как ограничить ресурсы, которые может использовать контейнер LXD

Ограничить использование сети

ть что такое LXD и как с ним начать , если вы не знакомы с платформой.

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

Когда ограничения на контейнеры LXD могут быть полезны

  • Предоставление услуги и предоставление каждому клиенту экземпляра LXD. Например, это может быть большой сервер, и вы размещаете каждый веб-сайт клиента в отдельном контейнере. Если веб-сайт получает внезапный всплеск трафика, это может замедлить работу других экземпляров. С лимитами тормозить будет только один контейнер, оста

    Когда ограничения на контейнеры LXD могут быть полезны

    ию вы можете легко продавать разные планы обслуживания. Один клиент может заплатить за X количество ресурсов, а другой может заплатить за Y количество. И вы можете легко настроить это с помощью нескольких простых команд.
  • Вы можете защитить себя от более простых форм атак типа «отказ в обслуживании». Когда один контейнер подвергается бомбардировке, он достигает предела использования ресурсов. Остальные контейнеры не будут затронуты.
  • У вас есть два контейнера, каждый из которых будет использовать 100 % доступного процессорного времени. Однако вы хотите, чтобы один завершил работу быстрее, чем другой. Например, можно визуализировать видео для проекта, который понадобится вам завтра. Вы можете назначить 90% процессорного времени первому и 10% второму.

Конечно, у вас могут быть свои причины. А если вы используете только один контейнер во всей системе, вам это может даже не понадобиться. Но если вы используете несколько контейнеров, вам почти всегда нужно устанавливать какие-то ограничения. Потому что атака, ошибка или какая-либо другая форма неправильного поведения в одном экземпляре LXD может повлиять на всю систему и замедлить ее работу. Чем больше у вас контейнеров, тем больше увеличивается вероятность такого сценария.

Как установить ограничения ресурсов для контейнеров LXD

Для управления ресурсами, связанными с дисковыми операциями, потребуется установка ZFS. Если вы следовали учебник здесь , значит, он уже установлен. В противном случае установите утилиты ZFS, как указано в руководстве, а затем повторно запустите команду ниже. Когда вас спросят, какое хранилище использовать, выберите ZFS.

sudo lxd init

Ограничить использование памяти

В приведенных ниже командах замените «container_name» на фактическое имя вашего контейнера. Установить ограничение памяти так же просто, как ввести:

lxc config set container_name limits.memory 100MB

Введите «ГБ» вместо «МБ», если вы хотите использовать гигабайты вместо мегабайт.

Ограничить использование ЦП

Если вы хотите ограничить количество ядер ЦП, которые может использовать контейнер, введите:

lxc config set container_name limits.cpu 2

Чтобы «прикрепить» к определенным ядрам ЦП, используйте:

lxc config set container_name limits.cpu 0-0

Это приведет к тому, что контейнер будет использовать только первый процессор. Чтобы использовать второй, введите 1-1. Чтобы использовать все ядра ЦП с первого по третье, введите 0–3.

Другой тип ограничения — это количество процессорного времени, которое может использовать контейнер.

lxc config set container_name limits.cpu.allowance 10ms/100ms

Это позволит контейнеру использовать только десять миллисекунд процессорного времени из каждых 100 миллисекунд, то есть около 10 % одного ядра ЦП.

Ограничить использование диска

Чтобы ограничить ресурсы, связанные с диском, необходимо

Как установить ограничения ресурсов для контейнеров LXD

е существует по умолчанию, унаследованный от профиля LXD по умолчанию. Но пока вы этого не сделаете, вы не сможете изменить его настройки для каждого контейнера.

lxc config device add container_name root disk pool=default path=/

Если вы назвали свой пул по-другому, замените «default» на имя вашего пула хранения. Если вы забыли его имя, вы можете отобразить его с помощью:

lxc storage list

Чтобы ограничить дисковое пространство, которое может использовать экземпляр LXD:

lxc config device set container_name root size 7GB

К сожалению, ограничения ввода-вывода (скорости чтения/записи и IOPS) в данный момент н

Ограничить использование памяти

пользование сети

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

lxc network list

При необходимости замените «lxdbr0» (если в вашем случае мост назван по-другому). Если вы не выбрали тип сети как мостовой (ответ по умолчанию), на этапах настройки «lxd init» вам, возможно, придется адаптировать приведенную ниже команду в соответс

Ограничить использование ЦП

возможно, придется заменить «nictype» на то, что вы использовали для своей сети LXD.

lxc config device add container_name eth0 nic name=eth0 nictype=bridged parent=lxdbr0

Наконец, установите ограничения на входящий (загрузочный) и/или исходящий (загрузочный) сетевой трафик.

lxc config device set container_name eth0 limits.ingress 1Mbit

1Мбит — это один мегабит (не мегабайт). Один байт содержит 8 бит, а это означает, что скорость загрузки будет ограничена примерно 1/8 = 0,125 Мбит в секунду, примерно 120 килобайтами. Итак, если вы хотите, чтобы скорость загрузки составляла 1 МБ/с (мегабайт), умножьте это число на 8 и установите предел входящего трафика на 8 Мбит.

Для выхода используйте:

lxc config device set container_name eth0 limits.egress 1Mbit

Заключение

Здесь рассматриваются наиболее часто используемые свойства, связанные с ограничениями ресурсов. Но есть гораздо больше переменных, которые вы можете установить с помощью lxc config device setи lxc config set. Вы можете подробнее узнать об этих настраиваемых свойствах контейнера на странице LXD на GitHub.

Ограничить использование диска

Заключение

ПОХОЖИЕ СТАТЬИ

Популярные записи