Sdílet prostřednictvím


Podpora více podsítí v síťové službě hostitele

Platí pro: Windows Server 2025, Windows Server 2022

Použití více podsítí na síť je nyní podporováno v hostované síťové službě (HNS) pro kontejnery Windows. Dříve HNS omezoval konfigurace koncových bodů kontejneru Kubernetes tak, aby používaly pouze délku předpony základní podsítě. Služba HNS je vylepšená, takže můžete použít více omezující podsítě, jako jsou podsítě s delší délkou předpony a více podsítí na pracovní uzel Windows. První rozhraní CNI (Container Networking Interface), které tuto funkci dokáže, je Calico pro Windows. Calico Network Policies je open-source řešení sítě a zabezpečení sítí založené Tigera.

V HNS můžete využívat více podsítí pouze pro ovladače sítí l2bridge, l2tunnela překryvné sítě. Tyto síťové ovladače můžou zveřejnit více podsítí a pak povolit každému koncovému bodu vytvořit vazbu k jedné z těchto podsítí.

HNS a hostitelská výpočetní služba (HCS) spolupracují na vytváření kontejnerů a připojování koncových bodů k síti. S HNS můžete pracovat pomocí modulu HNS Powershell Helper .

Požadavky Calico

Podpora více podsítí pro CNI Calico vyžaduje rozdělení podsítě do menších bloků IP adres. Všechny bloky IP adres musí sdílet stejnou bránu, ale každý blok IP adres může mít svou vlastní samostatnou doménu všesměrového vysílání. Aby bylo přidělení IPV4 co nejefektivnější, calico vyžaduje vytvoření velmi malých bloků IP adres (stejně jako jeden blok = čtyři IP adresy), kromě nastavení velmi malých předpon na koncových bodech kontejneru (tak malé jako /32).

Úplná implementace správy IP adres Calico (IPAM) funguje takto:

Funkce IPAM calico je navržená tak, aby přidělila IP adresy úlohám na vyžádání. Calico také podporuje více IP fondů pro administrativní seskupování. Při konfiguraci přidělení pro konkrétní úlohu může být sada povolených fondů omezena konfigurací, která umožňuje různé případy použití. Postupujte podle následujících pokynů pro různé případy použití:

  • Ke zvýšení kapacity použijte více oddělených fondů.
  • Pro l2bridge sítě v racku nakonfigurujte fond IP adres pro každý rack, aby hostitelé v racku mohli přidělovat adresy pouze z konkrétního fondu.
  • Použijte fond IP adres pro každou vrstvu zásobníku, kde front-endové pody získávají IP adresy z front-endového fondu (který může být veřejný), ale back-endové pody (potenciálně na stejném hostiteli) přijímají IP adresy z jiného rozsahu. To umožňuje Calico vyhovět agresivním požadavkům na dělení sítě (jak může být zapotřebí při práci se staršími bránami firewall).
  • Používejte velmi malé mikro pooly, jeden pro každou úroveň zásobníku. Vzhledem k tomu, že jsou tyto fondy tak malé, vyžadují, aby každý hostitel podporoval úlohy z více fondů.

IP adresy jsou vždy přiděleny z bloků a tyto bloky mohou být přiřazeny konkrétnímu hostiteli. Hostitel se vždy pokusí přiřadit IP adresy z jednoho z vlastních affine bloků, pokud je zde místo (a jen pokud tento blok pochází z povoleného rozsahu pro danou úlohu). Pokud žádný z existujících bloků hostitele nemá místo, pokusí se hostitel vyžádat nový blok z povoleného fondu. Pokud nejsou k dispozici žádné prázdné bloky, hostitel si půjčí IP adresu z jakéhokoli bloku v povoleném fondu, který má k dispozici volné místo, i když je přiřazen tento blok jinému hostiteli.

Calico spoléhá na nejdelší předponu, která odpovídá směrování pro podporu agregace. Každý hostitel inzeruje trasy pro všechny své afinní bloky a inzeruje /32 trasy pro všechny IP adresy, které si půjčil. Vzhledem k tomu, že je trasa /32 konkrétnější, budou vzdálení hostitelé, kteří potřebují přesměrovat trasu /32, místo širší trasy /26 na hostitele s blokem affinu použít trasu /32.

Vzhledem k tomu, že Calico je směrovaná síť L3, je třeba zmínit, že trasy /26 nejsou určené jako podsítě. Například neexistuje žádná adresa sítě nebo vysílací adresa; adresy 0 a 255 v bloku se používají jako běžné IP adresy.

Požadavky na datovou rovinu Calico HNS

Existuje několik požadavků na připojení a zásady Calico, které umožňují více podsítí v HNS:

  • Všechny úlohy na stejném hostiteli musí mít připojení k sobě navzájem a ke vzdáleným podům.
  • Všechny cesty paketů mezi pody by měly obsahovat následující informace o tom, jestli jsou odesílatel a příjemce společně umístěné na stejném hostiteli a jestli k sobě přistupují buď přímo, nebo ip adresou clusteru služeb:
    • Odchozí a příchozí zásady řízení přístupu (ACL) musí platit.
    • Zásady odchozího provozu odesílajícího podu i zásady příchozího provozu přijímajícího podu musí povolovat provoz.
    • Všechna pravidla seznamu ACL naprogramovaná podle Calico by měla být schopná zobrazit IP adresy podů.
  • Hostitelé a pody musí být schopní se vzájemně spojit a spojit se s pody na jiných hostitelích přes trasy získané přes protokol BGP (Border Gateway Protocol).

Požadavky na více bloků IP adres na jednoho hostitele

Pokud chcete podporovat více bloků IP adres na hostitele, projděte si následující požadavky:

  • U daného jednoho fondu IP adres musí rovina dat umožňovat přidání podů s IP adresami z různých oddělených bloků IP adres. Například fond IP adres může být 10.0.0.0/16, ale hostitel může deklarovat dvojici náhodných bloků: 10.0.123.0/26 a 10.0.200.0/26.
  • Zásobník ani velikost bloků nemusí být známé před prvním přidělením. Důrazně se to doporučuje.
  • Ostatní bloky ze stejného fondu mohou být přítomny na jiných hostitelích.
  • Společná předpona různých bloků se může překrývat s vlastní IP adresou hostitele.

Požadavky na podporu zapůjčení IP adres

Calico IPAM přidělí IP adresy hostitelům v blocích pro účely agregace. Pokud je fond IP adres plný, uzly si také můžou půjčit IP adresy z bloku jiného uzlu. Pokud jde o protokol BGP, dlužník pak inzeruje konkrétnější trasu /32 pro vypůjčenou IP adresu a pak se provoz této IP adresy směruje na hostitele výpůjčky.

Uzly Windows nepodporují tento mechanismus půjčování. Nebudou si půjčovat IP adresy, i když je fond IP adres plný, a označí jejich bloky tak, aby si uzly Linuxu také nepůjčovaly od nich.

Požadavky na podporu mikropoolů

Pokud chcete používat mikropooly, požadavek na rezervaci čtyř IP adres na jeden blok se odebere. V případě použití mikropoolu se používají velmi malé fondy a velmi malé bloky, takže použití čtyř IP adres na blok znamená plýtvání většinou IP adres. Můžete vyžadovat malý počet rezervovaných IP adres na hostitele nebo na fond. Osvědčeným postupem je zrušit všechna omezení podpory vrstvy 2 (například by neměla existovat žádná podpora vysílání a žádné rezervované IP adresy).

Vytvoření podsítě a podsítě PROTOKOLU IP pomocí PowerShellu

Než budete pokračovat, ujistěte se, že máte nainstalovaný modul HNS.V2.psm1 z galerie HNS PowerShell.

Následující kroky vysvětlují, jak vytvořit podsíť a podsíť PROTOKOLU IP pomocí příkladů.

  1. Pokud chcete vytvořit l2bridge síť s jednou podsítí 192.168.0.0/16 obsahující podsíť 192.168.1.0/24 a podsítí IP 192.168.2.0/24, spusťte následující příkaz:

    $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. Pokud chcete přidat novou podsíť 172.16.0.0/16, která obsahuje podsíť PROTOKOLU IP 172.16.0/16 do sítě l2 bridge, spusťte následující příkaz:

    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. Pokud chcete přidat novou podsíť IP adres 172.16.2.0/24 do podsítě 172.16.0.0/16, spusťte následující příkaz:

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

Pokud chcete odebrat podsítě IP, postupujte následovně:

  1. Pokud chcete odebrat podsíť IP adres 172.16.2.0/24, spusťte následující příkaz:

       $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. Pokud chcete odebrat podsíť 172.16.0.0/16, spusťte následující příkaz:

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