Запуск контейнеров поверх QEMU

297
Jacob Kopczynski

У меня есть тестовая установка, я пытаюсь перейти на использование виртуальных машин, а не как минимум, как можно чаще. Существующая установка структурирована для запуска всего внутри контейнеров (в частности, LXC), и она не исчезнет, ​​поэтому, если это вообще возможно, я хочу использовать существующую структуру на виртуальных машинах. Кластер виртуальных машин, в котором работают другие службы, является QEMU.

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

  • Известны ли проблемы с запуском LXC внутри виртуальных машин QEMU в частности или виртуальных машин в целом?

  • Есть ли препятствия, которые я должен ожидать, и если да, то что?

  • Скорее всего, это будут проблемы с нашей индивидуальной настройкой, чем общие проблемы совместимости?

0

1 ответ на вопрос

0
Austin Hemmelgarn

Совместимость

Там не должно быть никаких проблем. QEMU функционально не отличается от обычного оборудования для гостевой системы, и LXC не делает ничего, требующего особого поведения от оборудования, которое QEMU не эмулирует.

Но...

Вы, вероятно, не хотите делать это не только потому, что это ухудшит производительность, но и значительно усложнит управление. Вам, вероятно, следует пересмотреть, почему вы считаете, что вам нужны виртуальные машины под контейнерами (или, что еще лучше, если вы уже используете контейнеры для части своей инфраструктуры, почему вы должны использовать виртуальные машины вместо остальных). Если вы действительнозаботясь о динамической миграции или улучшенной изоляции рабочих нагрузок от того, что предоставляют контейнеры, вам, вероятно, лучше просто адаптировать остальную часть своей инфраструктуры для использования контейнеров, поскольку они используют меньше ресурсов. Единственное исключение из этого - системы, которые предоставляют сервисы, доступные внешнему миру, которые никогда не должны находиться на общем хосте, если они не находятся в виртуальной машине (потому что сбой контейнера довольно часто приводит к краху хоста), и даже тогда следует как правило, не быть на общем хосте с внутренними службами.

Хорошо, но я действительно хочу сделать это в любом случае.

В этом случае работайте над адаптацией вашего программного обеспечения для использования виртуальных машин вместо контейнеров. Реально, это не должно быть слишком сложно для адаптации. На самом деле довольно просто настроить QEMU для непосредственной загрузки ядра Linux (и, следовательно, обойти необходимость в загрузчике, а вместе с ним и необходимость в таблице разделов), и, как только вы сможете это сделать, легко извлечь этот базовый образ контейнера в образ файловой системы, который вы затем можете использовать непосредственно в качестве диска (это все равно будет немного ниже производительности, чем контейнеры, но нигде не так плохо, как запуск контейнеров внутри виртуальных машин).

У меня нет контроля над машинами, на которых работают виртуальные машины, и я не могу заставить их запускать контейнеры. Виртуальные машины не являются опцией для ранее существовавших тестов на «голое железо», поэтому они должны продолжать использовать контейнеры. Поэтому я хочу сделать это, потому что альтернатива состоит в том, чтобы иметь две параллельные инфраструктуры для запуска одинаковых тестов в разных контекстах. Jacob Kopczynski 6 лет назад 0

Похожие вопросы