Rozhraní CNI (AKS Legacy Container Networking Interface)

Ve službě Azure Kubernetes Service (AKS) se ve většině scénářů doporučuje překrytí Azure CNI a podsíť podů Azure CNI, jako je podsíť uzlů Azure CNI a kubenet, stále dostupné a podporované. Tyto starší modely nabízejí různé přístupy ke správě IP adres a sítím podů, z nichž každá má vlastní sadu funkcí a aspektů. Tento článek obsahuje přehled těchto starších možností sítě, podrobně popisuje jejich požadavky, parametry nasazení a klíčové charakteristiky, které vám pomůžou porozumět jejich rolím a efektivnímu použití v rámci clusterů AKS.

Požadavky

Pro podsíť uzlů Azure CNI a kubenet jsou vyžadovány následující požadavky:

  • Virtuální síť pro cluster AKS musí umožňovat odchozí připojení k internetu.

  • Clustery AKS nemůžou používat 169.254.0.0/16, 172.30.0.0/16, , 172.31.0.0/16ani 192.0.2.0/24 pro rozsah adres služby Kubernetes, rozsah adres podů nebo rozsah adres virtuální sítě clusteru.

  • Identita clusteru používaná clusterem AKS musí mít v podsíti v rámci virtuální sítě alespoň oprávnění Přispěvatel sítě. Pokud chcete místo předdefinované role Přispěvatel sítě definovat vlastní roli , musíte mít následující oprávnění:

    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
    • Microsoft.Authorization/roleAssignments/write
  • Podsíť přiřazená k fondu uzlů AKS nemůže být delegovaná podsíť.

  • AKS u své podsítě nepoužije skupiny zabezpečení sítě (NSG) a neupravuje žádné skupiny zabezpečení sítě přidružené k této podsíti. Pokud zadáte vlastní podsíť a přidáte skupiny zabezpečení sítě přidružené k této podsíti, ujistěte se, že pravidla zabezpečení v NSG povolují provoz v rozsahu CIDR uzlu. Další informace najdete v tématu Skupiny zabezpečení sítě.

Poznámka:

Kubenet není k dispozici pro kontejnery Windows Serveru. Pokud chcete používat fondy uzlů Windows Serveru, musíte použít Azure CNI.

Podsíť uzlu Azure CNI

V případě rozhraní CNI (Container Networking Interface) získá každý pod z podsítě IP adresu a bude k němu možné přistupovat přímo. Systémům ve stejné virtuální síti jako cluster AKS se jako zdrojová adresa jakéhokoli provozu z podu zobrazuje IP adresa podu. Systémy mimo virtuální síť clusteru AKS vidí IP adresu uzlu jako zdrojovou adresu pro veškerý provoz z podu. Tyto IP adresy musí být jedinečné v rámci vašeho síťového prostoru a musí být naplánovány předem. Každý uzel má parametr konfigurace pro maximální počet podů, které podporuje. Ekvivalentní počet IP adres na uzel je pak vyhrazený předem pro tento uzel. Tento přístup vyžaduje větší plánování a často vede k vyčerpání IP adres nebo nutnosti znovu sestavit clustery ve větší podsíti, jak vaše aplikace roste.

V podsíti uzlu Azure CNI každý podsíť obdrží IP adresu v podsíti PROTOKOLU IP a může komunikovat přímo s ostatními pody a službami. Clustery můžou být tak velké jako rozsah IP adres, který zadáte. Rozsah IP adres ale musíte naplánovat předem a všechny IP adresy využívají uzly AKS na základě maximálního počtu podů, které můžou podporovat. Azure CNI podporuje pokročilé síťové funkce a scénáře, jako jsou virtuální uzly nebo zásady sítě (Azure nebo Calico).

Parametry nasazení

Při vytváření clusteru AKS se pro sítě Azure CNI dají konfigurovat následující parametry:

Virtuální síť: Virtuální síť, do které chcete nasadit cluster Kubernetes. Můžete vytvořit novou virtuální síť nebo použít existující. Pokud chcete použít existující virtuální síť, ujistěte se, že je ve stejném umístění a předplatném Azure jako cluster Kubernetes. Informace o omezeních a kvótách pro virtuální síť Azure najdete v tématu Limity, kvóty a omezení předplatného a služeb Azure.

Podsíť: Podsíť ve virtuální síti, do které chcete cluster nasadit. Během procesu vytváření clusteru můžete do virtuální sítě přidat nové podsítě. V případě hybridního připojení by se rozsah adres neměl překrývat s jinými virtuálními sítěmi ve vašem prostředí.

Modul plug-in sítě Azure: Při použití síťového modulu plug-in Azure není k interní službě LoadBalancer s modulem externalTrafficPolicy=Local přístup z virtuálních počítačů s IP adresou v clusterUCIDR, která nepatří do clusteru AKS.

Rozsah adres služby Kubernetes: Tento parametr je sada virtuálních IP adres, které Kubernetes přiřazuje interním službám ve vašem clusteru. Po vytvoření clusteru nelze tento rozsah aktualizovat. Můžete použít libovolný rozsah privátních adres, který splňuje následující požadavky:

  • Nesmí být v rozsahu IP adres virtuální sítě vašeho clusteru.
  • Nesmí se překrývat s jinými virtuálními sítěmi, se kterými partnerský vztah virtuálních sítí clusteru.
  • Nesmí se překrývat s místními IP adresami.
  • Nesmí být v rozsazích 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16nebo 192.0.2.0/24.

I když je možné zadat rozsah adres služby ve stejné virtuální síti jako váš cluster, nedoporučujeme ho. Překrývající se rozsahy IP adres můžou mít za následek nepředvídatelné chování. Další informace najdete v nejčastějších dotazech. Další informace o službách Kubernetes najdete v dokumentaci ke službám Kubernetes.

IP adresa služby DNS Kubernetes: IP adresa pro službu DNS clusteru. Tato adresa musí být v rozsahu adres služby Kubernetes. Nepoužívejte první IP adresu v rozsahu adres. První adresa v rozsahu podsítě se používá pro adresu kubernetes.default.svc.cluster.local .

Kubenet

Clustery AKS používají kubenet a ve výchozím nastavení vytvoří virtuální síť a podsíť Azure. Při použití kubenet získají uzly IP adresu z podsítě virtuální sítě Azure. Pody získají IP adresu z logicky jiného adresního prostoru do podsítě virtuální sítě Azure uzlů. Překlad síťových adres (NAT) se pak nakonfiguruje, aby pody mohly přistupovat k prostředkům ve virtuální síti Azure. Zdrojová IP adresa provozu je NAT na primární IP adresu uzlu. Tento přístup výrazně snižuje počet IP adres, které potřebujete rezervovat v síťovém prostoru, aby se pody mohly používat.

Při vytváření nových fondů uzlů můžete nakonfigurovat maximální nasazení podů do uzlu při vytváření clusteru nebo při vytváření nových fondů uzlů. Pokud při vytváření nových fondů uzlů nezadáte maxPods , zobrazí se výchozí hodnota 110 pro kubenet.

Přehled sítí kubenet s vlastní podsítí

V mnoha prostředích jste definovali virtuální sítě a podsítě s přidělenými rozsahy IP adres a tyto prostředky používáte k podpoře více služeb a aplikací. K zajištění síťového připojení můžou clustery AKS používat kubenet (základní sítě) nebo Azure CNI (pokročilé sítě).

V případě kubenetu obdrží IP adresu v podsíti virtuální sítě jenom uzly. Pody nemůžou vzájemně komunikovat přímo. Místo toho směrování definované uživatelem a předávání IP zpracovává připojení mezi pody napříč uzly. Trasy definované uživatelem a konfigurace předávání IP se vytvářejí a spravují ve výchozím nastavení službou AKS, ale pokud chcete, můžete použít vlastní směrovací tabulku pro vlastní správu tras. Pody můžete také nasadit za službu, která přijímá přiřazenou IP adresu a vyrovnává zatížení provozu pro aplikaci. Následující diagram ukazuje, jak uzly AKS přijímají IP adresu v podsíti virtuální sítě, ale ne pody:

Diagram znázorňující dva uzly se třemi pody spuštěnými v překryvné síti Provoz podů do koncových bodů mimo cluster se směruje přes překlad adres (NAT).

podpora Azure maximálně 400 tras v trasy definované uživatelem, takže cluster AKS nemůžete mít větší než 400 uzlů. Virtuální uzly AKS a zásady sítě Azure se u kubenetu nepodporují. Podporují se zásady sítě Calico.

Omezení a aspekty kubenetu

Poznámka:

Některé systémové pody, jako je konnectivity v rámci clusteru, používají IP adresu hostitelského uzlu místo IP adresy z překryvného adresního prostoru. Systémové pody budou používat pouze IP adresu uzlu a ne IP adresu z virtuální sítě.

Dostupnost a vyčerpání IP adres

Běžným problémem s Azure CNI je, že přiřazený rozsah IP adres je příliš malý, aby při škálování nebo upgradu clusteru přidal další uzly. Síťový tým také nemusí být schopen vydat dostatečně velký rozsah IP adres pro podporu očekávaných požadavků aplikace. Jako kompromis můžete vytvořit cluster AKS, který používá kubenet a připojit se k existující podsíti virtuální sítě. Tento přístup umožňuje uzlům přijímat definované IP adresy, aniž by bylo nutné předem rezervovat velký počet IP adres pro všechny potenciální pody, které by mohly běžet v clusteru.

Pomocí kubenetu můžete použít mnohem menší rozsah IP adres a podporovat velké clustery a požadavky aplikací. Například s rozsahem IP adres /27 ve vaší podsíti můžete spustit cluster 20–25 uzlů s dostatečným prostorem pro škálování nebo upgrade. Tato velikost clusteru může podporovat až 2 200 až 2 750 podů (s výchozím maximálním počtem 110 podů na uzel). Maximální počet podů na uzel, který můžete nakonfigurovat s kubenetem v AKS, je 250.

Následující základní výpočty porovnávají rozdíly v síťových modelech:

  • kubenet: Jednoduchý rozsah IP adres /24 může podporovat až 251 uzlů v clusteru. Každá podsíť virtuální sítě Azure si vyhrazuje první tři IP adresy pro operace správy. Tento počet uzlů může podporovat až 27 610 podů s výchozím maximálním počtem 110 podů na uzel.
  • Azure CNI: Stejný základní rozsah podsítě /24 může podporovat maximálně 8 uzlů v clusteru. Tento počet uzlů může podporovat maximálně 240 podů s výchozím maximálním počtem 30 podů na uzel.

Poznámka:

Tato maxima nebere v úvahu operace upgradu ani škálování. V praxi nemůžete spustit maximální počet uzlů, které rozsah IP adres podsítě podporuje. Některé IP adresy musíte nechat dostupné pro operace škálování nebo upgradu.

Partnerské vztahy virtuálních sítí a připojení ExpressRoute

K zajištění místního připojení můžete použít partnerský vztah virtuálních sítí Azure nebo připojení ExpressRoute s Azure CNI a kubenetem . Ujistěte se, že ip adresy plánujete pečlivě, abyste zabránili překrývání a nesprávnému směrování provozu. Mnoho místních sítí například používá rozsah adres 10.0.0.0/8 , který se inzeruje přes připojení ExpressRoute. Doporučujeme vytvářet clustery AKS v podsítích virtuální sítě Azure mimo tento rozsah adres, například 172.16.0.0/16.

Další informace najdete v tématu Porovnání síťových modelů a jejich rozsahů podpory.

Nejčastější dotazy k podsíti podů Azure CNI

  • Můžu nasadit virtuální počítače v podsíti clusteru?

    Ano pro podsíť uzlu Azure CNI, virtuální počítače je možné nasadit ve stejné podsíti jako cluster AKS.

  • Jaká zdrojová IP adresa externí systémy vidí provoz, který pochází z podu s podporou Azure CNI?

    Systémům ve stejné virtuální síti jako cluster AKS se jako zdrojová adresa jakéhokoli provozu z podu zobrazuje IP adresa podu. Systémy mimo virtuální síť clusteru AKS vidí IP adresu uzlu jako zdrojovou adresu pro veškerý provoz z podu. U dynamického přidělování IP adres Azure CNI se ale připojení nachází ve stejné virtuální síti nebo mezi virtuálními sítěmi, IP adresa podu je vždy zdrojovou adresou pro veškerý provoz z podu. Důvodem je to, že Azure CNI pro dynamické přidělování IP adres implementuje infrastrukturu sítí kontejnerů Microsoft Azure, která poskytuje kompletní prostředí. Proto eliminuje použití ip-masq-agent, která je stále používána tradiční Azure CNI.

  • Můžu nakonfigurovat zásady sítě pro jednotlivé pody?

    Ano, zásady sítě Kubernetes jsou k dispozici v AKS. Pokud chcete začít, přečtěte si téma Zabezpečení provozu mezi pody pomocí zásad sítě v AKS.

  • Je možné maximální počet podů nasadit do uzlu, který je možné konfigurovat?

    Clustery AKS ve výchozím nastavení používají kubenet a vytvářejí virtuální síť a podsíť. V případě kubenetu z podsítě virtuální sítě získají uzly IP adresu. Překlad síťových adres (NAT) se pak nakonfiguruje na uzlech a pody obdrží IP adresu "skrytou" za IP uzlu. Tento přístup snižuje počet IP adres, které potřebujete rezervovat v síťovém prostoru, aby se pody mohly používat.

    V případě rozhraní CNI (Container Networking Interface) získá každý pod z podsítě IP adresu a bude k němu možné přistupovat přímo. Systémům ve stejné virtuální síti jako cluster AKS se jako zdrojová adresa jakéhokoli provozu z podu zobrazuje IP adresa podu. Systémy mimo virtuální síť clusteru AKS vidí IP adresu uzlu jako zdrojovou adresu pro veškerý provoz z podu. Tyto IP adresy musí být jedinečné v rámci vašeho síťového prostoru a musí být naplánovány předem. Každý uzel má parametr konfigurace pro maximální počet podů, které podporuje. Ekvivalentní počet IP adres na uzel je pak vyhrazený předem pro tento uzel. Tento přístup vyžaduje větší plánování a často vede k vyčerpání IP adres nebo nutnosti znovu sestavit clustery ve větší podsíti, jak vaše aplikace roste.

  • Můžu nasadit virtuální počítače v podsíti clusteru?

    Ano. U Azure CNI pro dynamické přidělování IP adres ale virtuální počítače nejde nasadit v podsíti.

  • Jaká zdrojová IP adresa externí systémy vidí provoz, který pochází z podu s podporou Azure CNI?

    Systémům ve stejné virtuální síti jako cluster AKS se jako zdrojová adresa jakéhokoli provozu z podu zobrazuje IP adresa podu. Systémy mimo virtuální síť clusteru AKS vidí IP adresu uzlu jako zdrojovou adresu pro veškerý provoz z podu.

    V případě Azure CNI pro dynamické přidělování IP adres se ale připojení nachází ve stejné virtuální síti nebo napříč virtuálními sítěmi, IP adresa podu je vždy zdrojovou adresou pro veškerý provoz z podu. Důvodem je to, že Azure CNI pro dynamické přidělování IP adres implementuje infrastrukturu sítí kontejnerů Microsoft Azure, která poskytuje kompletní prostředí. Proto eliminuje použití ip-masq-agent, která je stále používána tradiční Azure CNI.

  • Můžu pro rozsah adres služby Kubernetes použít jinou podsíť ve virtuální síti clusteru?

    Nedoporučuje se, ale tato konfigurace je možná. Rozsah adres služby je sada virtuálních IP adres (VIPs), které Kubernetes přiřazuje interním službám ve vašem clusteru. Sítě Azure nemají přehled o rozsahu IP adres služby clusteru Kubernetes. Nedostatek přehledu o rozsahu adres služby clusteru může vést k problémům. Později můžete ve virtuální síti clusteru vytvořit novou podsíť, která se překrývají s rozsahem adres služby. Pokud dojde k takovému překrývání, může Kubernetes přiřadit službě IP adresu, kterou už používá jiný prostředek v podsíti, což způsobí nepředvídatelné chování nebo selhání. Tím, že zajistíte, že použijete rozsah adres mimo virtuální síť clusteru, můžete se těmto rizikům vyhnout. Ano, když nasadíte cluster pomocí Azure CLI nebo šablony Resource Manageru. Viz Maximální počet podů na uzel.

  • Můžu pro rozsah adres služby Kubernetes použít jinou podsíť ve virtuální síti clusteru?

    Nedoporučuje se, ale tato konfigurace je možná. Rozsah adres služby je sada virtuálních IP adres (VIPs), které Kubernetes přiřazuje interním službám ve vašem clusteru. Sítě Azure nemají přehled o rozsahu IP adres služby clusteru Kubernetes. Nedostatek přehledu o rozsahu adres služby clusteru může vést k problémům. Později můžete ve virtuální síti clusteru vytvořit novou podsíť, která se překrývají s rozsahem adres služby. Pokud dojde k takovému překrývání, může Kubernetes přiřadit službě IP adresu, kterou už používá jiný prostředek v podsíti, což způsobí nepředvídatelné chování nebo selhání. Tím, že zajistíte, že použijete rozsah adres mimo virtuální síť clusteru, můžete se těmto rizikům vyhnout.