Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе показано, как подключить конечные точки контейнеров к существующей виртуальной сети клиента, созданной с помощью SDN. Вы используете сетевой драйвер l2bridge (и, при необходимости, l2tunnel), который доступен вместе с плагином Windows libnetwork для использования с Docker, чтобы создать сеть контейнеров на виртуальной машине арендатора.
В разделе "Сетевые драйверы контейнеров " мы обсудили, что несколько сетевых драйверов доступны через Docker в Windows. Для SDN используйте драйверы l2bridge и l2tunnel . Для обоих драйверов каждая конечная точка контейнера находится в той же виртуальной подсети, что и виртуальная машина узла контейнера (клиента).
Сетевая служба узла (HNS) через подключаемый модуль частного облака динамически назначает IP-адреса для конечных точек контейнеров. Конечные точки контейнера имеют уникальные IP-адреса, но используют один и тот же MAC-адрес виртуальной машины узла контейнера (клиента) из-за преобразования адресов уровня 2.
Политика сети (ACL, инкапсуляция и QoS) для этих конечных точек контейнера применяется в физическом узле Hyper-V, полученном сетевым контроллером и определенными в системах управления верхним уровнем.
Различия между драйверами l2bridge и l2tunnel :
l2bridge | Туннель l2 |
---|---|
Конечные точки контейнера, на которые находятся:
|
Весь сетевой трафик между двумя конечными точками контейнера пересылается на физический узел Hyper-V независимо от узла или подсети. Политика сети применяется как к межсети, так и к сетевому трафику между узлами. |
Примечание.
Эти сетевые режимы не работают для подключения конечных точек контейнеров Windows к виртуальной сети клиента в общедоступном облаке Azure.
Необходимые компоненты
Развернутая инфраструктура SDN с сетевым контроллером.
Была создана виртуальная сеть клиента.
Развернутая виртуальная машина клиента с включенной функцией контейнера Windows, установленной и включенной функцией Hyper-V. Компонент Hyper-V необходим для установки нескольких двоичных файлов для сетей l2bridge и l2tunnel.
# To install HyperV feature without checks for nested virtualization dism /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V /All
Примечание.
Вложенная виртуализация и предоставление расширений виртуализации не требуется, если не используются контейнеры Hyper-V.
Рабочий процесс
1. Добавьте несколько IP-конфигураций к существующему ресурсу сетевого интерфейса виртуальной машины через сетевой контроллер (узелHyper-V)2. Включите сетевой прокси на узле для выделения IP-адресов контейнерного агрегатора (CA) для конечных точек контейнеров (узелHyper-V)3. Установите подключаемый модуль частного облака, чтобы назначить IP-адреса CA конечным точкам контейнеров (виртуальная машина хоста контейнера)4. Создайте сеть l2bridge или l2tunnel с помощью Docker (виртуальная машина хоста контейнера)
Примечание.
Несколько IP-конфигураций не поддерживаются в ресурсах сетевого адаптера виртуальной машины, созданных с помощью System Center диспетчер виртуальных машин. Для этих типов развертываний рекомендуется создать ресурс сетевого адаптера виртуальной машины с помощью PowerShell сетевого адаптера виртуальной машины.
1. Добавление нескольких IP-конфигураций
На этом шаге предполагается, что сетевой адаптер виртуальной машины виртуальной машины клиента имеет одну IP-конфигурацию с IP-адресом 192.168.1.9 и подключен к идентификатору ресурса виртуальной сети "VNet1" и ресурсу подсети виртуальной машины "Подсеть1" в подсети IP-адресов 192.168.1.0/24. Мы добавим 10 IP-адресов для контейнеров с 192.168.1.101 – 192.168.1.110.
Import-Module NetworkController
# Specify Network Controller REST IP or FQDN
$uri = "<NC REST IP or FQDN>"
$vnetResourceId = "VNet1"
$vsubnetResourceId = "Subnet1"
$vmnic= Get-NetworkControllerNetworkInterface -ConnectionUri $uri | where {$_.properties.IpConfigurations.Properties.PrivateIPAddress -eq "192.168.1.9" }
$vmsubnet = Get-NetworkControllerVirtualSubnet -VirtualNetworkId $vnetResourceId -ResourceId $vsubnetResourceId -ConnectionUri $uri
# For this demo, we will assume an ACL has already been defined; any ACL can be applied here
$allowallacl = Get-NetworkControllerAccessControlList -ConnectionUri $uri -ResourceId "AllowAll"
foreach ($i in 1..10)
{
$newipconfig = new-object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfiguration
$props = new-object Microsoft.Windows.NetworkController.NetworkInterfaceIpConfigurationProperties
$resourceid = "IP_192_168_1_1"
if ($i -eq 10)
{
$resourceid += "10"
$ipstr = "192.168.1.110"
}
else
{
$resourceid += "0$i"
$ipstr = "192.168.1.10$i"
}
$newipconfig.ResourceId = $resourceid
$props.PrivateIPAddress = $ipstr
$props.PrivateIPAllocationMethod = "Static"
$props.Subnet = new-object Microsoft.Windows.NetworkController.Subnet
$props.Subnet.ResourceRef = $vmsubnet.ResourceRef
$props.AccessControlList = new-object Microsoft.Windows.NetworkController.AccessControlList
$props.AccessControlList.ResourceRef = $allowallacl.ResourceRef
$newipconfig.Properties = $props
$vmnic.Properties.IpConfigurations += $newipconfig
}
New-NetworkControllerNetworkInterface -ResourceId $vmnic.ResourceId -Properties $vmnic.Properties -ConnectionUri $uri
2. Включение сетевого прокси-сервера
На этом шаге вы включите сетевой прокси-сервер для выделения нескольких IP-адресов для виртуальной машины узла контейнера.
Чтобы включить сетевой прокси-сервер, запустите скрипт ConfigureMCNP.ps1 на узлеHyper-V, на котором размещена виртуальная машина узла контейнера (клиента).
PS C:\> ConfigureMCNP.ps1
3. Установка подключаемого модуля частного облака
На этом шаге вы установите подключаемый модуль, чтобы разрешить HNS взаимодействовать с сетевым прокси-сервером на узле Hyper-V.
Чтобы установить подключаемый модуль, запустите скрипт InstallPrivateCloudPlugin.ps1 на виртуальной машине узла контейнера (клиента).
PS C:\> InstallPrivateCloudPlugin.ps1
4. Создание сети контейнеров l2bridge
На этом шаге вы используете docker network create
команду на виртуальной машине узла контейнера (клиента) для создания сети l2bridge.
# Create the container network
C:\> docker network create -d l2bridge --subnet="192.168.1.0/24" --gateway="192.168.1.1" MyContainerOverlayNetwork
# Attach a container to the MyContainerOverlayNetwork
C:\> docker run -it --network=MyContainerOverlayNetwork <image> <cmd>
Примечание.
Назначение статических IP-адресов не поддерживается с сетями контейнеров l2bridge или l2tunnel при использовании в Microsoft SDN Stack.
Дополнительные сведения
Дополнительные сведения о развертывании инфраструктуры SDN см. в статье "Развертывание программно-определяемой сетевой инфраструктуры".