Bagikan melalui


Beberapa dukungan subnet di Layanan Jaringan Host

Berlaku untuk: Windows Server 2025, Windows Server 2022

Menggunakan beberapa subnet per jaringan sekarang didukung di Host Networking Service (HNS) untuk kontainer Windows. Sebelumnya, HNS membatasi konfigurasi titik akhir kontainer Kubernetes untuk hanya menggunakan panjang awalan subnet yang digunakan. HNS telah ditingkatkan sehingga Anda dapat menggunakan subnet yang lebih terbatas, seperti subnet dengan awalan yang lebih panjang, serta beberapa subnet per simpul pekerja Windows. Antarmuka Jaringan Kontainer (CNI) pertama yang dapat fungsionalitas ini adalah Calico untuk Windows. Kebijakan Jaringan Calico adalah solusi jaringan sumber terbuka dan keamanan jaringan yang didirikan oleh Tigera.

Anda bisa memanfaatkan beberapa subnet di HNS hanya untuk l2bridge, l2tunnel, dan overlay driver jaringan. Driver jaringan ini dapat mengekspos beberapa subnet, lalu memungkinkan setiap titik akhir untuk mengikat ke salah satu subnet ini.

HNS dan Host Compute Service (HCS) bekerja sama untuk membuat kontainer dan melampirkan titik akhir ke jaringan. Anda dapat berinteraksi dengan HNS menggunakan modul HNS Powershell Helper.

Persyaratan Calico

Beberapa dukungan subnet untuk Calico CNI memerlukan pembagian subnet menjadi blok IP yang lebih kecil. Semua blok IP harus berbagi gateway yang sama, tetapi setiap blok IP dapat memiliki domain siaran terpisah mereka sendiri. Untuk memaksimalkan alokasi IPV4 menjadi seefisien mungkin, Calico memerlukan pembuatan blok IP yang sangat kecil (sekecil satu blok = empat alamat IP), selain mengatur awalan yang sangat kecil pada titik akhir kontainer (sekecil /32).

Implementasi lengkap Calico IP Address Management (IPAM) berfungsi sebagai berikut:

Fungsi IPAM Calico dirancang untuk mengalokasikan alamat IP ke beban kerja sesuai permintaan. Calico juga mendukung beberapa kumpulan IP untuk pengelompokan administratif. Saat mengonfigurasi alokasi untuk beban kerja tertentu, kumpulan kumpulan yang diizinkan dapat dibatasi oleh konfigurasi, yang memungkinkan berbagai kasus penggunaan. Ikuti panduan di bawah ini untuk kasus penggunaan yang berbeda:

  • Gunakan beberapa kumpulan yang terpisah untuk meningkatkan kapasitas.
  • Untuk l2bridge jaringan dalam rak, konfigurasikan kumpulan IP per rak tempat host dalam rak hanya dapat mengalokasikan dari kumpulan tertentu.
  • Gunakan kumpulan IP per lapisan tumpukan di mana pod front-end mendapatkan IP dari kumpulan front-end (yang mungkin bisa diakses publik), tetapi pod back-end (berpotensi berada pada host yang sama) menerima IP dari rentang yang berbeda. Ini memungkinkan Calico untuk sesuai dengan persyaratan partisi jaringan yang agresif (seperti yang mungkin diperlukan untuk bekerja dengan firewall warisan).
  • Gunakan kumpulan mikro yang sangat kecil, satu untuk setiap tingkat tumpukan. Karena kumpulan ini sangat kecil, mereka mengharuskan setiap host untuk mendukung beban kerja dari beberapa kumpulan.

IP-IP selalu dialokasikan dari blok-blok, dan blok-blok tersebut dapat dihubungkan ke host tertentu. Host akan selalu mencoba menetapkan IP dari salah satu blok affine-nya sendiri jika ada ruang (dan hanya jika blok berasal dari kumpulan yang diizinkan untuk beban kerja yang diberikan). Jika tidak ada blok host yang ada yang memiliki ruang, host akan mencoba mengklaim blok baru dari kumpulan yang diizinkan. Jika tidak ada blok kosong yang tersedia, host akan mengambil alamat IP dari blok mana pun dalam kumpulan yang diizinkan yang memiliki ruang kosong, bahkan jika blok tersebut terkait dengan host lain.

Calico mengandalkan perutean pencocokan awalan terpanjang untuk mendukung agregasi. Setiap host mengiklankan rute untuk semua blok affine-nya dan mengiklankan rute /32 untuk IP apa pun yang telah dipinjamnya. Karena rute /32 lebih spesifik, host-host jauh yang perlu meneruskan ke /32 akan menggunakan rute /32 daripada rute /26 yang lebih umum untuk host dengan blok affine.

Karena Calico adalah jaringan L3 yang dirutekan, perlu dicatat bahwa rute /26 tidak dimaksudkan untuk menjadi subnet. Misalnya, tidak ada jaringan atau alamat siaran; dan alamat "0" dan "255" blok digunakan sebagai IP normal.

Persyaratan sarana data Calico HNS

Ada beberapa persyaratan konektivitas dan kebijakan Calico untuk mengaktifkan beberapa subnet di HNS:

  • Semua beban kerja pada host yang sama harus memiliki konektivitas satu sama lain dan ke pod jarak jauh.
  • Semua jalur paket antar pod harus memiliki hal berikut apakah pengirim dan penerima berada di host yang sama atau tidak dan apakah mereka mengakses satu sama lain baik secara langsung atau oleh IP kluster layanan:
    • Kebijakan keluar dan masuk daftar kontrol akses (ACL) harus berlaku.
    • Kebijakan keluar dari pod pengirim dan kebijakan masuk pod penerima harus mengizinkan lalu lintas.
    • Semua aturan ACL yang diprogram Calico harus dapat melihat IP pod.
  • Host dan pod harus dapat menjangkau satu sama lain, serta menjangkau pod pada host lain melalui rute yang dipelajari lewat Border Gateway Protocol (BGP).

Beberapa blok IP untuk kebutuhan host

Untuk mendukung beberapa blok IP per host, tinjau persyaratan berikut:

  • Untuk kumpulan IP tunggal tertentu, rencana data harus memungkinkan pod ditambahkan dengan IP dari blok IP yang berbeda dan tidak saling berhubungan. Misalnya, kumpulan IP mungkin 10.0.0.0/16, tetapi host dapat mengklaim sepasang blok acak: 10.0.123.0/26 dan 10.0.200.0/26.
  • Ukuran kolam dan blok tidak perlu diketahui terlebih dahulu sebelum alokasi pertama. Ini sangat disarankan.
  • Blok lain dari kumpulan yang sama mungkin ada di host lain.
  • Awalan umum dari berbagai blok dapat tumpang tindih dengan alamat IP host sendiri.

Persyaratan untuk mendukung peminjaman IP

Calico IPAM mengalokasikan IP untuk dihosting dalam blok untuk tujuan agregasi. Jika kumpulan IP penuh, simpul juga dapat meminjam IP dari blok simpul lain. Dalam istilah BGP, peminjam kemudian mengiklankan rute /32 yang lebih spesifik untuk IP yang dipinjam dan lalu lintas untuk IP tersebut dirutekan ke host peminjaman.

Simpul Windows tidak mendukung mekanisme peminjaman ini. Mereka tidak akan meminjam IP bahkan jika kumpulan IP penuh, dan mereka menandai blok mereka sehingga node Linux juga tidak akan meminjam dari mereka.

Persyaratan untuk mendukung mikropool

Untuk menggunakan mikropool, persyaratan untuk memesan empat IP per blok dihapus. Dalam kasus penggunaan micropool, kumpulan yang sangat kecil dan blok yang sangat kecil digunakan, jadi empat IP per blok membuang sebagian besar IP. Anda dapat meminta sejumlah kecil IP yang dipesan baik per host maupun per grup. Praktik terbaik adalah memiliki semua batasan dukungan lapisan 2 dicabut (misalnya, seharusnya tidak ada dukungan untuk siaran dan tidak ada IP yang dipesan).

Membuat subnet dan subnet IP menggunakan PowerShell

Sebelum melanjutkan, pastikan Anda memiliki modul HNS.V2.psm1 yang diinstal dari galeri HNS PowerShell .

Langkah-langkah berikut menjelaskan cara membuat subnet dan subnet IP menggunakan contoh.

  1. Untuk membuat jaringan l2bridge dengan satu subnet IP 192.168.0.0/16 yang berisi subnet IP 192.168.1.0/24 dan subnet IP 192.168.2.0/24, jalankan perintah berikut:

    $net1 = New-HnsNetwork -Type L2Bridge -Name Test1 -AddressPrefix "192.168.0.0/16" -Gateway "192.168.0.1" -Verbose -IPSubnets @(@{"IpAddressPrefix"="192.168.1.0/24";"Flags"=0},@{"IpAddressPrefix"="192.168.2.0/24";"Flags"=[IPSubnetFlags]::EnableBroadcast})
    
  2. Untuk menambahkan subnet 172.16.0.0/16 baru yang berisi subnet IP 172.16.1.0/16 baru ke jaringan l2bridge, jalankan perintah berikut:

    New-HnsSubnet -NetworkID $net1.ID -Subnets @{
        "IpAddressPrefix"="172.16.0.0/16";
        "Routes"=@(@{"NextHop"="172.16.0.1";"DestinationPrefix"="0.0.0.0"});
        "IpSubnets"=@(@{"IpAddressPrefix"="172.16.1.0/24"})
    
  3. Untuk menambahkan subnet IP 172.16.2.0/24 baru ke subnet 172.16.0.0/16, jalankan perintah berikut:

    New-HnsIPSubnet -NetworkID $net1.ID -SubnetID $net2.Subnets[1].ID -IPSubnets @{"IpAddressPrefix"="172.16.2.0/24";"Flags"=0}
    

Untuk menghapus subnet IP, gunakan langkah-langkah berikut:

  1. Untuk menghapus subnet IP 172.16.2.0/24, jalankan perintah berikut:

       $net2 = Get-HnsNetwork -ID $net1.ID
       Remove-HnsIpSubnet -NetworkID $net1.ID -SubnetID $net2.Subnets[1].ID -IPSubnets @{"ID"=$net2.Subnets[1].IPSubnets[1].ID}
    
  2. Untuk menghapus subnet 172.16.0.0/16, jalankan perintah berikut:

    Remove-HnsSubnet -NetworkID $net1.ID -Subnets @{"ID"=$net2.Subnets[1].ID}