Bagikan melalui


Koneksi titik akhir kontainer ke jaringan virtual penyewa

Berlaku untuk: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, versi 21H2 dan 20H2

Dalam topik ini, kami menunjukkan kepada Anda cara menyambungkan titik akhir kontainer ke jaringan virtual penyewa yang ada yang dibuat melalui SDN. Anda menggunakan driver jaringan l2bridge (dan opsional l2tunnel) yang tersedia dengan plugin Libnetwork Windows untuk Docker untuk membuat jaringan kontainer pada VM penyewa.

Dalam topik Driver jaringan kontainer, kami membahas beberapa driver jaringan tersedia melalui Docker di Windows. Untuk SDN, gunakan driver l2bridge dan l2tunnel . Untuk kedua driver, setiap titik akhir kontainer berada di subnet virtual yang sama dengan komputer virtual host kontainer (penyewa).

Host Networking Service (HNS), melalui plugin cloud privat, secara dinamis menetapkan alamat IP untuk titik akhir kontainer. Titik akhir kontainer memiliki alamat IP unik tetapi berbagi alamat MAC yang sama dari komputer virtual host kontainer (penyewa) karena terjemahan alamat Layer-2.

Kebijakan jaringan (ACL, enkapulasi, dan QoS) untuk titik akhir kontainer ini diberlakukan dalam host Hyper-V fisik seperti yang diterima oleh Pengontrol Jaringan dan didefinisikan dalam sistem manajemen lapisan atas.

Perbedaan antara driver l2bridge dan l2tunnel adalah:

l2bridge l2tunnel
Titik akhir kontainer yang berada di:
  • Komputer virtual host kontainer yang sama dan pada subnet yang sama memiliki semua lalu lintas jaringan yang dihubungkan dalam sakelar virtual Hyper-V.
  • VM host kontainer yang berbeda atau pada subnet yang berbeda memiliki lalu lintas yang diteruskan ke host Hyper-V fisik.
Kebijakan jaringan tidak diberlakukan karena lalu lintas jaringan antara kontainer pada host yang sama dan di subnet yang sama tidak mengalir ke host fisik. Kebijakan jaringan hanya berlaku untuk lalu lintas jaringan kontainer lintas host atau lintas subnet.
SEMUA lalu lintas jaringan antara dua titik akhir kontainer diteruskan ke host Hyper-V fisik terlepas dari host atau subnet. Kebijakan jaringan berlaku untuk lalu lintas subnet dan lalu lintas jaringan lintas host.

Catatan

Mode jaringan ini tidak berfungsi untuk menyambungkan titik akhir kontainer windows ke jaringan virtual penyewa di cloud publik Azure.

Prasyarat

  • Infrastruktur SDN yang disebarkan dengan Pengontrol Jaringan.

  • Jaringan virtual penyewa telah dibuat.

  • Komputer virtual penyewa yang disebarkan dengan fitur Kontainer Windows diaktifkan, Docker diinstal, dan fitur Hyper-V diaktifkan. Fitur Hyper-V diperlukan untuk menginstal beberapa biner untuk jaringan l2bridge dan l2tunnel.

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

Catatan

Virtualisasi berlapis dan mengekspos ekstensi virtualisasi tidak diperlukan kecuali menggunakan Kontainer Hyper-V.

Alur kerja

1. Tambahkan beberapa konfigurasi IP ke sumber daya VM NIC yang ada melalui Pengontrol Jaringan (Hyper-V Host)2. Aktifkan proksi jaringan pada host untuk mengalokasikan Alamat IP CA untuk titik akhir kontainer (Hyper-V Host)3. Instal plug-in cloud privat untuk menetapkan alamat IP CA ke titik akhir kontainer (Container Host VM)4. Membuat jaringan l2bridge atau l2tunnel menggunakan docker (Container Host VM)

Catatan

Beberapa konfigurasi IP tidak didukung pada sumber daya VM NIC yang dibuat melalui System Center Virtual Machine Manager. Disarankan untuk jenis penyebaran ini bahwa Anda membuat sumber daya VM NIC dari band menggunakan Network Controller PowerShell.

1. Tambahkan Beberapa Konfigurasi IP

Dalam langkah ini, kami mengasumsikan VM NIC dari komputer virtual penyewa memiliki satu konfigurasi IP dengan alamat IP 192.168.1.9 dan dilampirkan ke ID Sumber Daya VNet 'VNet1' dan Sumber Daya Subnet VM 'Subnet1' di subnet IP 192.168.1.0/24. Kami menambahkan 10 alamat IP untuk kontainer dari 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. Aktifkan proksi jaringan

Dalam langkah ini, Anda mengaktifkan proksi jaringan untuk mengalokasikan beberapa alamat IP untuk komputer virtual host kontainer.

Untuk mengaktifkan proksi jaringan, jalankan skrip ConfigureMCNP.ps1 pada Host Hyper-V yang menghosting komputer virtual host kontainer (penyewa).

PS C:\> ConfigureMCNP.ps1

3. Pasang plug-in Cloud Privat

Dalam langkah ini, Anda menginstal plug-in untuk memungkinkan HNS berkomunikasi dengan proksi jaringan di Hyper-V Host.

Untuk menginstal plug-in, jalankan skrip InstallPrivateCloudPlugin.ps1 di dalam komputer virtual host kontainer (penyewa).

PS C:\> InstallPrivateCloudPlugin.ps1

4. Buat Jaringan Kontainer l2bridge

Dalam langkah ini, Anda menggunakan docker network create perintah pada komputer virtual host kontainer (penyewa) untuk membuat jaringan 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>

Catatan

Penetapan IP statis tidak didukung dengan jaringan kontainer l2bridge atau l2tunnel saat digunakan dengan Microsoft SDN Stack.

Informasi selengkapnya

Untuk detail selengkapnya tentang menyebarkan infrastruktur SDN, lihat Menyebarkan Infrastruktur Jaringan yang Ditentukan Perangkat Lunak.