Dela via


Ansluta containerslutpunkter till ett virtuellt klientnätverk

I det här avsnittet visar vi hur du ansluter containerslutpunkter till ett befintligt virtuellt klientnätverk som skapats via SDN. Du använder nätverksdrivrutinen l2bridge (och eventuellt l2tunnel) som är tillgänglig med Windows libnetwork-plugin-programmet för Docker för att skapa ett containernätverk på den virtuella klientdatorn.

I avsnittet containernätverksdrivrutiner diskuterade vi att flera nätverksdrivrutiner är tillgängliga via Docker i Windows. För SDN använder du drivrutinerna l2bridge och l2tunnel . För båda drivrutinerna befinner sig varje containerslutpunkt i samma virtuella undernät som containerhostens (tenant) virtuella maskin.

Värdnätverkstjänsten (HNS) tilldelar dynamiskt IP-adresserna för containerslutpunkter via plugin-programmet för privata moln. Containerslutpunkterna har unika IP-adresser men delar samma MAC-adress för den virtuella containervärdmaskinen (hyresgästen) på grund av adressöversättning på lager 2.

Nätverkspolicy (ACL:er, inkapsling och QoS) för dessa container-slutpunkter genomdrivs på den fysiska Hyper-V-värden som tas emot av nätverksstyrenheten och definieras i överliggande hanteringssystem.

Skillnaderna mellan l2bridge - och l2tunneldrivrutinerna är:

l2bridge l2tunnel
Containerslutpunkter som finns på:
  • Samma virtuella containervärddator och i samma undernät har all nätverkstrafik bryggd inom den Hyper-V virtuella växeln.
  • Olika containervärddatorer eller på olika undernät får sin trafik vidarebefordrad till den fysiska Hyper-V värd.
Nätverkspolicyn tillämpas inte eftersom nätverkstrafik mellan containrar på samma värd och i samma undernät inte flödar till den fysiska värden. Nätverksprincipen gäller endast för nätverkstrafik mellan värdar eller undernätscontainer.
ALL nätverkstrafik mellan två containerslutpunkter vidarebefordras till den fysiska Hyper-V värden oavsett värd eller undernät. Nätverksprincipen gäller för både nätverkstrafik mellan undernät och mellan värdar.

Note

Dessa nätverkslägen fungerar inte för att ansluta Windows-containerslutpunkter till ett virtuellt klientnätverk i det offentliga Azure-molnet.

Prerequisites

  • En distribuerad SDN-infrastruktur med nätverksstyrenheten.

  • Ett virtuellt klientnätverk har skapats.

  • En distribuerad virtuell klientdator med funktionen Windows Container aktiverad, Docker installerad och Hyper-V funktionen aktiverad. Funktionen Hyper-V krävs för att installera flera binärfiler för l2bridge- och l2tunnelnätverk.

    # To install HyperV feature without checks for nested virtualization
    dism /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V /All
    

Note

Kapslad virtualisering och exponerande av virtualiseringstillägg krävs inte om du inte använder Hyper-V Containers.

Workflow

1. Lägg till flera IP-konfigurationer i en befintlig NIC-resurs för virtuella datorer via nätverksstyrenheten (Hyper-V värd)2. Aktivera nätverksproxyn på värden för att allokera CA IP-adresser för containerslutpunkter (Hyper-V värd)3. Installera plugin-programmet för privata moln för att tilldela CA IP-adresser till containerslutpunkter (virtuell containervärd)4. Skapa ett l2bridge - eller l2tunnelnätverk med docker (containervärd-VM)

Note

Flera IP-konfigurationer stöds inte på VM NIC-resurser som skapats via System Center Virtual Machine Manager. För dessa distributionstyper rekommenderar vi att du skapar NIC-resursen för virtuella datorer utan band med hjälp av Nätverksstyrenheten PowerShell.

1. Lägg till flera IP-konfigurationer

I det här steget förutsätter vi att VM-nätverkskortet för den virtuella maskinen har en IP-konfiguration med IP-adressen 192.168.1.9 och är ansluten till ett VNet-resurs-ID av 'VNet1' och en VM-undernätsresurs av 'Subnet1' i IP-undernätet 192.168.1.0/24. Vi lägger till 10 IP-adresser för containrar från 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. Aktivera nätverksproxyn

I det här steget gör du det möjligt för nätverksproxyn att allokera flera IP-adresser för den virtuella containervärddatorn.

Om du vill aktivera nätverksproxyn kör du skriptetConfigureMCNP.ps1 på den Hyper-V värd som är värd för den virtuella containervärden (klientdatorn).

PS C:\> ConfigureMCNP.ps1

3. Installera plugin-programmet för privata moln

I det här steget installerar du ett plugin-program så att HNS kan kommunicera med nätverksproxyn på Hyper-V-värden.

Om du vill installera plugin-programmet kör du skriptetInstallPrivateCloudPlugin.ps1 inuti den virtuella containervärdens (klientorganisationens) virtuella dator.

PS C:\> InstallPrivateCloudPlugin.ps1

4. Skapa ett l2bridge Container Network

I det här steget använder du docker network create-kommandot på den virtuella containervärden (tenant) för att skapa ett nätverk av typen 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>

Note

Statisk IP-tilldelning stöds inte med l2bridge - eller l2tunnelcontainernätverk när den används med Microsoft SDN Stack.

Mer information

Mer information om hur du distribuerar en SDN-infrastruktur finns i Distribuera en programvarudefinierad nätverksinfrastruktur.