Udostępnij za pośrednictwem


Obsługa wielu podsieci w usłudze sieci hosta

Dotyczy: Windows Server 2025, Windows Server 2022

Korzystanie z wielu podsieci na sieć jest teraz obsługiwane w usłudze sieci hosta (HNS) dla kontenerów systemu Windows. Wcześniej HNS ograniczała konfiguracje punktu końcowego kontenera Kubernetes do używania tylko prefiksu bazowej podsieci. Sieć HNS została ulepszona, dzięki czemu można używać bardziej restrykcyjnych podsieci, takich jak podsieci o dłuższej długości prefiksu, a także wielu podsieci na węzeł roboczy systemu Windows. Pierwszym interfejsem sieci kontenera (CNI), który obsługuje tę funkcjonalność, jest Calico dla systemu Windows. Zasady sieci Calico to rozwiązanie sieci open source i zabezpieczeń sieci założone przez Tigera.

Możesz używać wielu podsieci w usłudze HNS tylko dla sterowników sieciowych l2bridge, l2tunneli overlay. Te sterowniki sieciowe mogą uwidocznić wiele podsieci, a następnie zezwolić każdemu punktowi końcowemu na powiązanie z jedną z tych podsieci.

Usługi HNS i host compute service (HCS) współpracują ze sobą, aby tworzyć kontenery i przyłączać punkty końcowe do sieci. Możesz wchodzić w interakcje z usługą HNS przy użyciu modułu pomocnika programu PowerShell HNS.

Wymagania dotyczące Calico

Obsługa wielu podsieci dla sieci CNI Calico wymaga podziału podsieci na mniejsze bloki ADRESÓW IP. Wszystkie bloki adresów IP muszą współużytkować tę samą bramę, ale każdy blok ip może mieć własną oddzielną domenę emisji. Aby zmaksymalizować alokację protokołu IPV4 tak wydajną, jak to możliwe, Calico wymaga utworzenia bardzo małych bloków IP (tak małych, jak jeden blok = cztery adresy IP), oprócz ustawiania bardzo małych prefiksów w punktach końcowych kontenera (tak małe, jak /32).

Pełna implementacja rozwiązania Calico IP Address Management (IPAM) działa w następujący sposób:

Funkcja IPAM w Calico została zaprojektowana, aby przydzielać adresy IP do obciążeń na żądanie. Calico obsługuje również wiele pul adresów IP na potrzeby grupowania administracyjnego. Podczas konfigurowania alokacji dla określonego obciążenia zestaw dozwolonych pul może być ograniczony przez konfigurację, co pozwala na różne przypadki użycia. Postępuj zgodnie z poniższymi wskazówkami dotyczącymi różnych przypadków użycia:

  • Użyj wielu rozłącznych pul, aby zwiększyć pojemność.
  • W przypadku sieci l2bridge w stojaku należy skonfigurować pulę adresów IP dla stojaka, w której hosty w stojaku mogą przydzielać tylko z określonej puli.
  • Użyj puli adresów IP dla każdej warstwy stosu, gdzie zasobniki front-endu uzyskują adresy IP z puli front-endu (która może być publiczna), ale zasobniki back-endu (potencjalnie na tym samym hoście) odbierają adresy IP z innego zakresu. Dzięki temu Calico może pasować do agresywnych wymagań dotyczących partycjonowania sieci (co może być konieczne do pracy ze starszymi zaporami).
  • Używaj bardzo małych mikropul, po jednym dla każdej warstwy stosu. Ponieważ te pule są tak małe, wymagają od każdego hosta obsługi obciążeń z wielu pul.

Adresy IP są zawsze przydzielane z bloków, a te bloki mogą być przypisane do określonego hosta. Host zawsze będzie próbował przypisać adresy IP z jednego z własnych przypisanych bloków, jeśli jest dostępne miejsce (i tylko wtedy, gdy blok pochodzi z dozwolonej puli dla danego obciążenia). Jeśli żaden z istniejących bloków hosta nie ma miejsca, host spróbuje zarezerwować nowy blok z dozwolonej puli. Jeśli nie są dostępne żadne puste bloki, host pożyczy adres IP z dowolnego bloku w dozwolonej puli, który ma wolne miejsce, nawet jeśli ten blok jest powiązany z innym hostem.

Calico opiera się na trasowaniu z dopasowaniem najdłuższego prefiksu do obsługi agregacji. Każdy host ogłasza trasy dla wszystkich swoich przypisanych bloków oraz ogłasza trasy /32 dla dowolnych adresów IP, które zostały przez niego wypożyczone. Ponieważ trasa /32 jest bardziej szczegółowa, hosty zdalne, które muszą przekazywać dalej do /32, będą używać trasy /32 zamiast szerszej trasy /26 do hosta z powiązanym blokiem.

Ponieważ Calico jest siecią L3 z trasowaniem, warto zauważyć, że trasy /26 nie mają być traktowane jako podsieci. Na przykład brak adresu sieciowego lub adresu rozgłoszeniowego, a adresy „0” i „255” w bloku są używane jako zwykłe adresy IP.

Wymagania dotyczące płaszczyzny danych Calico HNS

Istnieje kilka wymagań dotyczących łączności i zasad Calico w celu włączenia wielu podsieci w usłudze HNS:

  • Wszystkie obciążenia na tym samym hoście muszą mieć łączność ze sobą i ze zdalnymi zasobnikami.
  • Wszystkie ścieżki pakietów między podami powinny spełniać następujące warunki, niezależnie od tego, czy nadawca i odbiorca znajdują się na tym samym hoście, oraz czy uzyskują dostęp do siebie bezpośrednio, czy przez adres IP klastra usług:
    • Listy kontroli dostępu (ACL) muszą zawierać zasady dla ruchu wychodzącego i przychodzącego.
    • Zarówno zasady ruchu wychodzącego podu wysyłającego, jak i zasady ruchu przychodzącego podu odbierającego muszą zezwalać na ruch.
    • Wszystkie reguły ACL zaprogramowane w Calico powinny mieć możliwość wyświetlania adresów IP podów.
  • Hosty i zasobniki muszą mieć możliwość dotarcia do siebie i dotarcia do zasobników na innych hostach za pośrednictwem tras poznanych za pośrednictwem protokołu BGP (Border Gateway Protocol).

Wymagania dotyczące wielu bloków IP na hosta

Aby obsługiwać wiele bloków adresów IP na hosta, zapoznaj się z następującymi wymaganiami:

  • W przypadku danej pojedynczej puli adresów IP płaszczyzna transmisji danych musi umożliwiać dodawanie zasobników z adresami IP z różnych, rozłącznych bloków adresów IP. Na przykład pula adresów IP może mieć wartość 10.0.0.0/16, ale host może podać parę losowych bloków: 10.0.123.0/26 i 10.0.200.0/26.
  • Pula i rozmiar bloków nie muszą być znane przed pierwszą alokacją. Jest to zdecydowanie zalecane.
  • Inne bloki z tej samej puli mogą znajdować się na innych hostach.
  • Wspólny prefiks różnych bloków może nakładać się na własny adres IP hosta.

Wymagania dotyczące obsługi pożyczek adresów IP

Calico IPAM przydziela adresy IP do hostowania w blokach na potrzeby agregacji. Jeśli pula adresów IP jest pełna, węzły mogą również pożyczyć adresy IP z bloku innego węzła. W terminologii BGP kredytobiorca następnie ogłasza bardziej szczegółową trasę /32 dla przejętego adresu IP, a ruch dla tego IP jest następnie kierowany do hosta, który go przejął.

Węzły systemu Windows nie obsługują tego mechanizmu zaciągania pożyczek. Nie będą oni pożyczać adresów IP, nawet jeśli pula adresów IP jest pełna, i zaznaczają swoje bloki tak, aby węzły Linux również nie korzystały z ich zasobów.

Wymagania dotyczące wsparcia mikropul

Aby korzystać z mikropul, wymaganie rezerwacji czterech adresów IP na blok zostało zniesione. W przypadku użycia mikropul są używane bardzo małe pule i bardzo małe bloki, więc cztery adresy IP na blok marnują większość adresów IP. Możesz wymagać niewielkiej liczby zarezerwowanych adresów IP na hosta lub pulę. Najlepszym rozwiązaniem jest zniesienie wszystkich ograniczeń obsługi warstwy 2 (na przykład nie powinno istnieć żadne wsparcie dla emisji i bez zastrzeżonych adresów IP).

Tworzenie podsieci i podsieci IP przy użyciu programu PowerShell

Przed kontynuowaniem upewnij się, że masz zainstalowany moduł HNS.V2.psm1 z galerii programu PowerShell HNS.

W poniższych krokach opisano sposób tworzenia podsieci i podsieci IP przy użyciu przykładów.

  1. Aby utworzyć sieć l2bridge z jedną podsiecią IP 192.168.0.0/16, która zawiera podsieć IP 192.168.1.0/24 i podsieć IP 192.168.2.0/24, uruchom następujące polecenie:

    $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. Aby dodać nową podsieć IP 172.16.0.0/16 zawierającą podsieć IP 172.16.1.0/16 do sieci l2bridge, uruchom następujące polecenie:

    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. Aby dodać nową podsieć IP 172.16.2.0/24 do podsieci IP 172.16.0.0/16, uruchom następujące polecenie:

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

Aby usunąć podsieci IP, wykonaj następujące czynności:

  1. Aby usunąć podsieć IP 172.16.2.0/24, uruchom następujące polecenie:

       $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. Aby usunąć podsieć 172.16.0.0/16, uruchom następujące polecenie:

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