[ 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