Как я могу создать дополнительный мост lxd?

Я хочу попытаться создать сетевую инфраструктуру с контейнерами, но как мне настроить другой мост lxd (например: lxcbr1) для моего контейнера lxc?

на хосте I типа:

sudo brctl addbr lxcbr1

, но когда я запускаю новый контейнер, набирая:

lxc launch images:centos/7/amd64 MyCentos

, этот контейнер принимает конфигурацию сети по умолчанию для моста lxdbr0.

2
задан 26 November 2017 в 00:04

1 ответ

ПРИМЕЧАНИЕ. Клиент LXC на компьютере может использовать удаленные экземпляры LXC. Все, что находится в квадратных скобках [ ] в информации об использовании, здесь следует игнорировать, так как я объясню, что делать вместе с ним. Я также использую команды launch, предоставленные из вопроса ОП, но вы можете использовать любой образ ОС для запуска, который вам нравится.

Вместо того, чтобы использовать brctl напрямую, а затем связываться с отдельными конфигурациями контейнеров, рассмотрите вместо этого использование lxc network create для этого и позвольте LXD управлять этими мостами. Это делает создание мостов действительно простым и не дает нам такой головной боли. (Это то, что я делаю в нескольких средах LXD).

Из использования:

lxc network create [<remote>:]<network> [key=value...]
    Create a network.

Фактически, просто сделайте lxc network create lxcbr1 или как хотите, чтобы назвать это.

Проблема в том, что вы должны указать это где-нибудь. Для этого я лично использую профили конфигурации, особенно если мне нужно привязать несколько мостов.

Теперь, обычно У меня есть отдельные профили для отдельных мостов, и я не помещаю два в один и тот же блок, но в вашем случае у вас будет два определения моста LXD. Поэтому нам нужно будет создать профиль конфигурации для них.


Если вам нужно несколько мостов на контейнере одновременно ...

Начните с копирования конфигурации default в конфигурацию multibridge:

lxc profile copy default multibridge

После этого нам нужно отредактировать новый файл с несколькими мостами, чтобы он имел несколько сетевых устройств.

lxc profile edit multibridge

Вы увидите нечто подобное в файле:

devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic

Создайте новую пустую строку после этой строки type и добавьте строки, чтобы она выглядела следующим образом:

devices:
  eth0:
    nictype: bridged
    parent: lxdbr0
    type: nic
  eth1:
    nictype: bridged
    parent: testing
    type: nic

Не редактируйте больше ничего в файле и сохраняйте его.

Теперь мы должны указать LXD создать новый контейнер, но использовать профиль multibridge:

lxc launch images:centos/7/amd64 MyCentos -p multibridge

Это скажет LXD использовать профиль multibridge, который мы только что настроили как профиль конфигурации для нового контейнера, и он должен использовать как lxdbr0, так и lxdbr1 на eth0 и eth1 соответственно внутри контейнера.

Одно важное предостережение: Система не умная и не настраивает eth1 должным образом. Таким образом, вам нужно зайти в свою систему CentOS и самостоятельно настроить конфигурацию для eth1, чтобы установить для нее DHCP или статические IP-адреса в пределах диапазонов IP-адресов конфигурации lxdbr1. В противном случае этот интерфейс никогда не будет задействован. Поскольку эта конфигурация будет варьироваться от ОС к ОС, я не могу дать вам четкий ответ о том, как настроить каждый сетевой интерфейс на каждом образе. Для этого есть другие ресурсы.


Если вам нужен только новый мост, а не несколько мостов в одном контейнере за раз ...

Затем нам нужно создать профиль специально для этого.

lxc profile copy default lxdbr1

... А затем отредактируйте этот новый профиль.

lxc profile edit lxdbr1

... И попав туда, найдите, где указано lxdbr0, и измените его на lxdbr1.

А затем, как и выше, запустите свой контейнер LXD и укажите для него профиль lxdbr1.

lxc launch images:centos/7/amd64 MyCentos -p lxdbr1

Вам не нужно будет выполнять какую-либо специализированную настройку для сетевого интерфейса, поскольку по умолчанию для первого интерфейса устанавливается DHCP, который автоматически настраивается автоматически.


Теперь просто некоторые заметки о постконфигурации:

Вы также можете пересмотреть все отдельные элементы сети, если вам известны конфигурации для входа, отредактировав конфигурацию сети lxdbr1 без использования brctl и просто позвоните lxc network edit lxdbr1 и добавьте отдельные конфигурации. Это позволяет lxd фактически обрабатывать все, и не заставляет вас вручную настраивать мост с помощью brctl (и позволяет LXD управлять мостом).

Возможно, вы захотите настроить конфигурацию сети, аналогичную приведенной ниже, которая отключает автоматический NAT и заставляет настраивать способ передачи данных в Интернет вручную для вашего второго моста (вы можете внести изменения в саму конфигурацию моста через lxc network edit lxdbr1, если вы хотите использовать lxdbr1 в качестве имени). Обратите внимание на использование здесь ipv4.nat: "false", которое отключает правило iptables 'MASQUERADE, которое делает его похожим на то, что сама система достигает исходящего:

config:
  ipv4.address: 10.75.251.1/24
  ipv4.dhcp: "true"
  ipv4.dhcp.ranges: 10.75.251.200-10.75.251.250
  ipv4.nat: "false"

Также есть и эквивалентные команды IPv6, но IPv4 с ним легче работать, поэтому я опускаю это здесь. Как только это будет сделано, вам необходимо перезагрузить контейнеры. Тем более, что мы установили все на dhcp.

3
ответ дан 26 November 2017 в 00:04

Другие вопросы по тегам:

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