[ English | Deutsch | русский | English (United Kingdom) ]

Добавление дополнительной сети в контейнер

В некоторых случаях может быть полезно иметь возможность добавлять дополнительный сетевой интерфейс для некоторой группы контейнеров (или просто для одного контейнера). В качестве примера это может быть использовано для применения известного фиксированного IP-адреса из другой сети для службы Designate. Мы покажем дальнейшую конфигурацию на основе этого примера. Предположим, что эта сеть 10.0.20.0/24, которая доступна через интерфейс br-dns.

Чтобы добавить новый интерфейс с этой сетью в назначенные контейнеры, нам необходимо выполнить несколько действий в openstack_user_config.yml.

Примечание

Подробный пример конфигурации openstack_user_config.yml вы см. в разделе Справочник настроек openstack_user_config.

  • Добавьте эту сеть в cidr_networks:

    cidr_networks:
      container: 172.29.236.0/22
      tunnel: 172.29.240.0/22
      storage: 172.29.244.0/22
      designate: 10.0.20.0/24
    
  • Опишите сеть в provider_networks:

    global_overrides:
      provider_networks:
        - network:
          container_bridge: "br-dns"
          container_type: "veth"
          container_interface: "eth5"
          ip_from_q: "designate"
          type: "veth"
          group_binds:
            - dnsaas_hosts
    
  • Назначьте переопределение для контейнеров

    Примечание

    Добавление ключа шлюза создаст маршрут по умолчанию внутри контейнера через него

    dnsaas_hosts:
      aio1:
        ip: 172.29.236.100
        container_vars:
          container_extra_networks:
            dns_address:
              bridge: br-dns
              interface: eth5
              address: 10.0.20.100
              netmask: 255.255.255.0
              gateway: 10.0.20.1
    

Использование интерфейсов SR-IOV в контейнерах

Для некоторых развертываний может потребоваться проброс устройств напрямую в контейнеры, например, когда используется SR-IOV или устройства не могут быть объединены мостом (например, с помощью IPoIB <https://www.kernel.org/doc/html/latest/infiniband/ipoib.html>)

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

Ниже в качестве примера мы попробуем использовать интерфейсы IB ​​для сети хранения данных и передать их внутрь контейнеров, которым требуется подключение к хранилищу. Для этого вам нужно описать соединения в provider_networks внутри конфигурации openstack_user_config.yml:

global_overrides:
  provider_networks:
    - network:
        container_bridge: "ib1"
        container_type: "phys"
        container_interface: "ib1"
        ip_from_q: "storage"
        type: "raw"
        group_binds:
          - cinder_volume
    - network:
        container_bridge: "ib3"
        container_type: "phys"
        container_interface: "ib3"
        ip_from_q: "storage"
        type: "raw"
        group_binds:
         - glance_api
    - network:
        container_bridge: "ib5"
        container_type: "phys"
        container_interface: "ib5"
        ip_from_q: "storage"
        type: "raw"
        group_binds:
          - gnocchi_api