Konfigurace sítí Azure CNI v Azure Kubernetes Service (AKS)

Ve výchozím nastavení clustery AKS používají kubenet a vytvářejí virtuální síť a podsíť. Pomocí kubenetu získají uzly IP adresu z podsítě virtuální sítě. Na uzlech se pak nakonfiguruje překlad síťových adres (NAT) a pody obdrží IP adresu "skrytou" za IP adresou uzlu. Tento přístup snižuje počet IP adres, které je potřeba rezervovat v síťovém prostoru pro použití podů.

Díky rozhraní Azure Container Networking Interface (CNI) získá každý pod IP adresu z podsítě a je k tomu 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 předem naplánovány. Každý uzel má konfigurační parametr pro maximální počet podů, které podporuje. Ekvivalentní počet IP adres na uzel se pak pro tento uzel předem vyhradí. 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 s rostoucími požadavky vaší aplikace.

V tomto článku se dozvíte, jak pomocí sítí Azure CNI vytvořit a používat podsíť virtuální sítě pro cluster AKS. Další informace o možnostech sítě a důležitých aspektech najdete v tématu Koncepty sítě pro Kubernetes a AKS.

Požadavky

  • Virtuální síť pro cluster AKS musí umožňovat odchozí připojení k internetu.
  • Clustery AKS nemusí používat 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16nebo 192.0.2.0/24 pro rozsah adres služby Kubernetes Service, rozsah adres podů nebo rozsah adres virtuální sítě clusteru.
  • Identita clusteru používaná clusterem AKS musí mít alespoň oprávnění Přispěvatel sítě v podsíti ve vaší virtuální síti. Pokud chcete místo použití předdefinované role Přispěvatel sítě definovat vlastní roli , jsou vyžadována 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 ve své podsíti nepoužívá 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 skupinách zabezpečení sítě umožňovala provoz v rámci rozsahu CIDR uzlu. Další podrobnosti najdete v tématu Skupiny zabezpečení sítě.

Plánování přidělování IP adres clusteru

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

IP adresy pro pody a uzly 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. Azure CNI ve výchozím nastavení předkonfiguruje dalších 30 IP adres, které se přiřadí podům naplánovaným na daném 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čet požadovaných IP adres by měl zahrnovat důležité informace o operacích upgradu a škálování. Pokud nastavíte rozsah IP adres tak, aby podporoval jenom pevný počet uzlů, nemůžete cluster upgradovat ani škálovat.

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

    • Tato úvaha je obzvláště důležitá, když používáte fondy uzlů Windows Serveru. Uzly Windows Serveru v AKS automaticky nepoužívají windows Aktualizace, 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. Na novém uzlu začnou běžet služby a úlohy. Rozsah IP adres musí brát v úvahu, jak můžete chtít vertikálně navýšit počet uzlů a podů, které může cluster podporovat. Měl by být zahrnut také jeden další uzel pro operace upgradu. Počet uzlů je pak n + number-of-additional-scaled-nodes-you-anticipate + 1.

Pokud očekáváte, že vaše uzly poběží maximální počet podů a budou je pravidelně ničit a nasazovat, měli byste také zohlednit některé další IP adresy na uzel. Tyto další IP adresy berou v úvahu, že odstranění služby a uvolnění IP adresy pro nasazení nové služby a získání adresy může trvat několik sekund.

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 velikost
Virtuální síť Virtuální síť Azure může být velká až /8, ale je omezená na 65 536 nakonfigurovaných IP adres. Před konfigurací adresního prostoru zvažte všechny své síťové potřeby, 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ůžete narazit na problémy s překrýváním jiných adresních prostorů v síti.
Podsíť Musí být dostatečně velká, aby se pojala uzly, pody a všechny prostředky Kubernetes a Azure, které by mohly být ve vašem clusteru zřízené. 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 také zohledňovat operace upgradu nebo budoucí potřeby škálování.

Výpočet minimální velikosti podsítě včetně dalšího uzlu pro operace upgradu: (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

Příklad pro cluster s 50 uzly: (51) + (51 * 30 (default)) = 1,581 (/21 nebo větší)

Příklad pro cluster s 50 uzly, který zahrnuje také zřízení pro 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, jak nakonfigurovat maximální počet podů na uzel a nastavit tuto hodnotu při nasazování clusteru.

Rozsah adres služby Kubernetes Service Tento rozsah by neměl používat žádný síťový prvek v této virtuální síti nebo k této virtuální síti připojený. Adresa CIDR služby musí být menší než /12. Tento rozsah můžete opakovaně používat v různých clusterech AKS.
IP adresa služby DNS Kubernetes IP adresa v rozsahu adres služby Kubernetes, kterou bude používat 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 .
Adresa mostu Docker Síťová adresa mostu Docker představuje výchozí síťovou adresu mostu docker0 přítomnou ve všech instalacích Dockeru. I když clustery AKS ani samotné pody most Docker0 nepoužívají, musíte tuto adresu nastavit, abyste mohli dál podporovat scénáře, jako je sestavení Dockeru v rámci clusteru AKS. Je nutné vybrat CIDR pro síťovou adresu mostu Dockeru, protože jinak Docker vybere podsíť automaticky, což může být v konfliktu s jinými identifikátoryCIDR. Musíte vybrat adresní prostor, který není v kolizi se zbytkem identifikátorů CIDR ve vašich sítích, včetně CIDR služby clusteru a podu CIDR. Výchozí hodnota je 172.17.0.1/16. Tento rozsah můžete opakovaně používat v různých clusterech AKS.

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 Azure CNI a metodou nasazení clusteru.

Metoda nasazení Výchozí kubenet 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 maxima – nové clustery

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

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

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

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

Poznámka

Minimální hodnotu ve výše uvedené tabulce striktně vynucuje služba AKS. Nemůžete nastavit hodnotu maxPods, která je nižší, než je uvedené minimum, a tím zabránit spuštění clusteru.

  • Azure CLI: Zadejte --max-pods argument při nasazování clusteru az aks create pomocí příkazu . Maximální hodnota je 250.
  • Resource Manager šablona: Při nasazení clusteru maxPods s Resource Manager šablonou zadejte vlastnost v objektu ManagedClusterAgentPoolProfile. Maximální hodnota je 250.
  • Azure Portal: Při vytváření clusteru Max pods per node nebo přidávání nového fondu uzlů změňte pole v nastavení fondu uzlů.

Konfigurace maximálního počtu – existující clustery

Nastavení maxPod na uzel je možné definovat při vytváření nového fondu uzlů. Pokud potřebujete zvýšit nastavení maxPod na uzel v existujícím clusteru, přidejte nový fond uzlů s novým požadovaným počtem maxPodů. 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 pro cluster vytvořit novou virtuální síť, vyberte Vytvořit novou a postupujte podle kroků v části Vytvoření virtuální sítě . 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 váš cluster Kubernetes. Informace o limitech 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 novou a postupujte podle kroků v části Vytvoření 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 parametrem 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 v clusteru. Tento rozsah nelze po vytvoření clusteru 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 je partnerský vztah virtuální 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 tématu Služby v dokumentaci ke kubernetes.

IP adresa služby Kubernetes DNS: IP adresa služby 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 .

Adresa mostu Dockeru: Síťová adresa mostu Dockeru představuje výchozí síťovou adresu mostu Docker0 , která je přítomná ve všech instalacích Dockeru. I když clustery AKS ani samotné pody most Docker0 nepoužívají, musíte tuto adresu nastavit, abyste mohli dál podporovat scénáře, jako je sestavení Dockeru v rámci clusteru AKS. Je nutné vybrat CIDR pro síťovou adresu mostu Dockeru, protože jinak Docker automaticky vybere podsíť, která by mohla být v konfliktu s jinými CIDR. Musíte vybrat adresní prostor, který není v kolizi se zbytkem identifikátorů CIDR ve vašich sítích, včetně CIDR služby clusteru a podu CIDR.

Konfigurace sítí – rozhraní příkazového řádku

Při vytváření clusteru AKS pomocí Azure CLI můžete také nakonfigurovat sítě Azure CNI. Pomocí následujících příkazů vytvořte nový cluster AKS s povolenou sítí Azure CNI.

Nejprve získejte ID prostředku podsítě pro existující podsíť, ke které bude cluster AKS připojen:

$ az network vnet subnet list \
    --resource-group myVnet \
    --vnet-name myVnet \
    --query "[0].id" --output tsv

/subscriptions/<guid>/resourceGroups/myVnet/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/default

az aks create Pomocí příkazu s argumentem --network-plugin azure vytvořte cluster s pokročilými sítěmi. --vnet-subnet-id Aktualizujte hodnotu pomocí ID podsítě shromážděné v předchozím kroku:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --generate-ssh-keys

Konfigurace sítí – portál

Následující snímek obrazovky z Azure Portal ukazuje příklad konfigurace těchto nastavení během vytváření clusteru AKS:

Snímek obrazovky z Azure Portal znázorňující příklad konfigurace těchto nastavení během vytváření clusteru AKS

Nejčastější dotazy

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

    Ano.

  • Jakou zdrojovou IP adresu vidí externí systémy pro 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.

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

    Ano, zásady sítě Kubernetes jsou k dispozici v AKS. Začněte tím, že si projdete téma Zabezpečení provozu mezi pody pomocí zásad sítě v AKS.

  • Je možné konfigurovat maximální počet podů nasaditelných do uzlu?

    Ano, když nasazujete cluster pomocí Azure CLI nebo šablony Resource Manager. 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ě vytvořené 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 při vytváření clusteru AKS, můžete nakonfigurovat na stránce konfigurace standardní virtuální sítě v Azure Portal.

  • Můžu pro rozsah adres služby Kubernetes použít jinou podsíť v rámci virtuální sítě clusteru?

    Nedoporučuje se to, ale tato konfigurace je možná. Rozsah adres služby je sada virtuálních IP adres,které Kubernetes přiřazuje interním službám v clusteru. Sítě Azure nemají žádný přehled o rozsahu IP adres služby clusteru Kubernetes. Z důvodu nedostatečného přehledu o rozsahu adres služby clusteru je možné později vytvořit novou podsíť ve virtuální síti clusteru, která se překrývá s rozsahem adres služby. Pokud k takovému překrývání dojde, Kubernetes může 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í. Pokud zajistíte, že použijete rozsah adres mimo virtuální síť clusteru, můžete se tomuto riziku překrývání vyhnout.

Další kroky

Pokud chcete nakonfigurovat sítě Azure CNI s dynamickým přidělováním IP adres a podporou rozšířené podsítě, přečtěte si téma Konfigurace sítí Azure CNI pro dynamické přidělování IP adres a podporu rozšířené podsítě v AKS.

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