Přehled sítí Azure CNI ve službě Azure Kubernetes Service (AKS)

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.

Poznámka:

Tento článek představuje pouze tradiční CNI Azure. V případě překrytí Azure CNI virtuální síť Azure CNI pro dynamické přidělování IP adres a virtuální síť Azure CNI – Přidělení statického bloku (Preview) Místo toho si projděte jejich dokumentaci.

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 ve vaší virtuální síti 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, musíte zajistit, aby pravidla zabezpečení v NSG umožňovala provoz v rozsahu CIDR uzlu. Další informace najdete v tématu Skupiny zabezpečení sítě.

Plánování přidělování IP adres pro váš cluster

Clustery nakonfigurované pomocí sítí Azure CNI vyžadují další plánování. Velikost virtuální sítě a její podsítě musí obsahovat počet podů, které plánujete spustit, a počet uzlů clusteru.

IP adresy podů a uzlů clusteru se přiřazují ze zadané podsítě v rámci virtuální sítě. Každý uzel je nakonfigurovaný s primární IP adresou. Předkonfiguruje Azure CNI ve výchozím nastavení 30 dalších IP adres. Tyto IP adresy se přiřazují podům naplánovaným na uzlu. Při škálování clusteru na více instancí se podobně každý uzel nakonfiguruje s použitím IP adres z dané podsítě. Můžete také zobrazit maximální počet podů na uzel.

Důležité

Požadovaný počet IP adres by měl zahrnovat aspekty operací upgradu a škálování. Pokud nastavíte rozsah IP adres tak, aby podporoval pouze pevný počet uzlů, nemůžete upgradovat ani škálovat cluster.

  • Při upgradu clusteru AKS se do clusteru nasadí nový uzel. Služby a úlohy se začnou spouštět na novém uzlu a ze clusteru se odebere starší uzel. Tento proces postupného upgradu vyžaduje, aby byl k dispozici minimálně jeden další blok IP adres. Váš počet uzlů je pak n + 1.

    • Tato skutečnost je obzvláště důležitá, když používáte fondy uzlů Windows Serveru. Uzly Windows Serveru v AKS se automaticky nepoužívají služba Windows Update. Místo toho provedete upgrade ve fondu uzlů. Tento upgrade nasadí nové uzly s nejnovější imagí základního uzlu Windows Serveru 2019 a opravami zabezpečení. Další informace o upgradu fondu uzlů Windows Serveru najdete v tématu Upgrade fondu uzlů v AKS.
  • Při škálování clusteru AKS se do clusteru nasadí nový uzel. Služby a úlohy se začnou spouštět na novém uzlu. Rozsah IP adres je potřeba vzít v úvahu, jak můžete chtít vertikálně navýšit kapacitu počtu uzlů a podů, které cluster může podporovat. Měl by být také zahrnut jeden další uzel pro operace upgradu. Váš počet uzlů je pak n + number-of-additional-scaled-nodes-you-anticipate + 1.

Pokud očekáváte, že uzly budou spouštět maximální počet podů a pravidelně rušíte a nasazujete pody, měli byste také počítat s některými dalšími IP adresami na uzel. Několik sekund může být potřeba k odstranění služby a uvolnění její IP adresy, aby se nová služba nasadila a získala ji. Tyto dodatečné IP adresy považují tuto možnost.

Plán IP adres clusteru AKS se skládá z virtuální sítě, alespoň jedné podsítě pro uzly a pody a rozsahu adres služby Kubernetes.

Rozsah adres / prostředek Azure Omezení a změna velikosti
Virtuální síť Virtuální síť Azure může být tak velká jako /8, ale je omezená na 65 536 nakonfigurovaných IP adres. Než nakonfigurujete adresní prostor, zvažte všechny potřeby sítě, včetně komunikace se službami v jiných virtuálních sítích. Pokud například nakonfigurujete příliš velký adresní prostor, může docházet k problémům s překrývajícími se dalšími adresními prostory v síti.
Podsíť Musí být dostatečně velký, aby vyhovoval uzlům, podům a všem prostředkům Kubernetes a Azure, které se můžou zřídit ve vašem clusteru. Pokud například nasadíte interní Azure Load Balancer, IP adresy jeho front-endu se přidělí z podsítě clusteru, a ne z veřejných IP adres. Velikost podsítě by měla zohledňovat také operace upgradu a budoucí potřeby škálování.

Následující rovnice slouží k výpočtu minimální velikosti podsítě včetně dodatečného uzlu pro operace upgradu:

(number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure) Příklad 50 uzlu clusteru: (51) + (51 * 30 (default)) = 1,581 (/21 nebo větší)

Příklad clusteru s 50 uzly, který zahrnuje také přípravu na vertikální navýšení kapacity dalších 10 uzlů: (61) + (61 * 30 (default)) = 1,891 (/21 nebo větší).

Pokud při vytváření clusteru nezadáte maximální počet podů na uzel, nastaví se maximální počet podů na uzel na 30. Z této hodnoty vychází minimální požadovaný počet IP adres. Pokud vypočítáte minimální požadavky na IP adresu na jinou maximální hodnotu, přečtěte si téma Maximální počet podů na uzel a nastavte tuto hodnotu při nasazování clusteru.

Rozsah adres služby Kubernetes Service Žádný síťový prvek v této virtuální síti nebo připojený k této virtuální síti nesmí používat tento rozsah. CiDR adresy služby musí být menší než /12. Tento rozsah můžete znovu použít v různých clusterech AKS.
IP adresa služby DNS Kubernetes IP adresa v rozsahu adres služby Kubernetes, který používá zjišťování služeb clusteru. Nepoužívejte první IP adresu v rozsahu adres. První adresa v rozsahu podsítě se používá pro adresu kubernetes.default.svc.cluster.local .

Maximální počet podů na uzel

Maximální počet podů na uzel v clusteru AKS je 250. Výchozí maximální počet podů na uzel se liší mezi sítěmi kubenet a sítí Azure CNI a metodou nasazení clusteru.

Metoda nasazení Výchozí nastavení Kubenetu Výchozí nastavení Azure CNI Konfigurovatelné při nasazení
Azure CLI 110 30 Ano (až 250)
Šablona Resource Manageru 110 30 Ano (až 250)
Portál 110 110 (konfigurovatelné na kartě Fondy uzlů) Ano (až 250)

Konfigurace maximálního počtu podů na uzel pro nové clustery

Můžete nakonfigurovat maximální počet podů na uzel buď v době nasazení clusteru, nebo při přidávání nových fondů uzlů. Maximální počet podů na hodnotu uzlu můžete nastavit až na 250.

Pokud při vytváření nových fondů uzlů nezadáte maxPods , zobrazí se výchozí hodnota 30 pro Azure CNI.

Minimální hodnota maximálního počtu podů na uzel se vynucuje, aby se zajistilo místo pro systémové pody kritické pro stav clusteru. Minimální hodnota, kterou lze nastavit pro maximální počet podů na uzel, je 10, pokud a pouze v případě, že konfigurace každého fondu uzlů má prostor pro minimálně 30 podů. Například nastavení maximálního počtu podů na uzel na minimum 10 vyžaduje, aby každý fond uzlů měl minimálně tři uzly. Tento požadavek platí i pro každý nově vytvořený fond uzlů, takže pokud je 10 definováno jako maximální počet podů na uzel, každý další přidaný fond uzlů musí mít alespoň tři uzly.

Sítě Minimum Maximum
Azure CNI 10 250
Kubenet 10 250

Poznámka:

Služba AKS vynucuje minimální hodnotu v předchozí tabulce. Nelze nastavit hodnotu maxPods, která je nižší než minimální zobrazená hodnota, protože to může zabránit spuštění clusteru.

Konfigurace maximálního počtu podů na uzel pro existující clustery

Nastavení maxPods na uzel lze definovat při vytváření nového fondu uzlů. Pokud potřebujete zvýšit nastavení maxPods v existujícím clusteru, přidejte nový fond uzlů s novým požadovaným počtem maxPods . Po migraci podů do nového fondu odstraňte starší fond. Pokud chcete odstranit jakýkoli starší fond v clusteru, ujistěte se, že nastavujete režimy fondu uzlů definované v dokumentu fondů systémových uzlů.

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. Pokud chcete vytvořit novou virtuální síť pro cluster, vyberte Vytvořit novou a postupujte podle pokynů v části Vytvořit virtuální síť . Pokud chcete vybrat 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. Pokud chcete vytvořit novou podsíť ve virtuální síti pro váš cluster, vyberte Vytvořit nový a postupujte podle kroků v části Vytvořit podsíť . 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 rozsahech 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16nebo 192.0.2.0/24

I když je technicky možné zadat rozsah adres služby ve stejné virtuální síti jako váš cluster, nedoporučuje se to. Nepředvídatelné chování může mít za následek použití překrývajících se rozsahů IP adres. Další informace najdete v části Nejčastější dotazy v tomto článku. 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 .

Nejčastější dotazy

  • 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 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?

    Ano, když nasadíte cluster pomocí Azure CLI nebo šablony Resource Manageru. Viz Maximální počet podů na uzel.

    V existujícím clusteru nemůžete změnit maximální počet podů na uzel.

  • Návody nakonfigurovat další vlastnosti podsítě, kterou jsem vytvořil(a) během vytváření clusteru AKS? Například koncové body služby.

    Úplný seznam vlastností virtuální sítě a podsítí, které vytvoříte během vytváření clusteru AKS, je možné nakonfigurovat na stránce konfigurace standardní virtuální sítě na webu Azure Portal.

  • 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.

Další krok

Další informace o sítích v AKS najdete v následujících článcích: