Sdílet prostřednictvím


Konfigurace sítí Azure CNI Overlay ve službě Azure Kubernetes Service (AKS)

Tradiční rozhraní Azure Container Networking Interface (CNI) přiřadí IP adresu sítě VNet ke každému podu. Přiřadí tuto IP adresu z předem rezervované sady IP adres na každém uzlu nebo ze samostatné podsítě vyhrazené pro pody. Tento přístup vyžaduje plánování IP adres a může vést k vyčerpání adres, což způsobuje potíže se škálováním clusterů s rostoucími požadavky vaší aplikace.

V případě překrytí Azure CNI se uzly clusteru nasadí do podsítě virtuální sítě Azure. Pody se přiřazují IP adresy z privátní CIDR logicky oddělené od virtuální sítě hostující uzly. Provoz podů a uzlů v rámci clusteru používá překryvnou síť. Překlad síťových adres (NAT) používá IP adresu uzlu pro přístup k prostředkům mimo cluster. Toto řešení šetří značné množství IP adres virtuální sítě a umožňuje škálovat cluster na velké velikosti. Výhodou je, že privátní CIDR můžete znovu použít v různých clusterech AKS, což rozšiřuje prostor IP adres dostupný pro kontejnerizované aplikace ve službě Azure Kubernetes Service (AKS).

Přehled překryvných sítí

V překryvných sítích jsou IP adresy z podsítí přiřazeny pouze uzlům clusteru Kubernetes. Pody přijímají IP adresy z privátního CIDR poskytovaného při vytváření clusteru. Každému /24 uzlu je přiřazen adresní prostor vyřezaný ze stejného CIDR. Další uzly vytvořené při rozšíření clusteru automaticky přijímají /24 adresové rozsahy ze stejného CIDR. Azure CNI přiřadí IP adresy podům z tohoto /24 prostoru.

V síťovém stacku Azure se vytvoří samostatná směrovací doména pro privátní CIDR rozsah podu, což vytvoří překryvnou síť pro přímou komunikaci mezi pody. Není nutné zřizovat vlastní trasy v podsíti clusteru nebo použít metodu zapouzdření pro tunelování provozu mezi pody, což zajišťuje výkon připojení mezi pody na úrovni srovnatelné s virtuálními počítači ve virtuální síti. Úlohy spuštěné v podech si ani neuvědomují, že probíhá manipulace se síťovými adresami.

Diagram znázorňující dva uzly, z nichž každý má tři pody běžící v překryvné síti. Provoz podů do koncových bodů mimo cluster se směruje přes překlad adres (NAT).

Komunikace s koncovými body mimo klastr, jako je lokální infrastruktura a propojené virtuální sítě, probíhá pomocí IP adresy uzlu prostřednictvím překladu síťových adres (NAT). Azure CNI přeloží zdrojovou IP adresu (překryvnou IP adresu podu) provozu na primární IP adresu virtuálního počítače, která umožňuje zásobník sítí Azure směrovat provoz do cíle. Koncové body mimo cluster se nemůžou připojit přímo k podu. Aplikaci podu musíte publikovat jako službu Kubernetes Load Balancer, aby byla dostupná ve virtuální síti.

Odchozí (výstupní) připojení k internetu můžete poskytnout pro overlay pody pomocí vyrovnávače zatížení ve standardní verzi nebo spravovaného NAT Gateway. Odchozí provoz můžete také řídit tím, že jej přesměrujete na firewall pomocí uživatelsky definovaných tras v podsíti clusteru.

Připojení příchozího přenosu dat ke clusteru můžete nakonfigurovat pomocí kontroleru příchozího přenosu dat, jako je Application Gateway pro kontejnery, NGINX nebo doplněk pro směrování aplikací.

Rozdíly mezi překryvem Kubenet a Azure CNI

Podobně jako překrytí Azure CNI přiřadí Kubenet IP adresy podům z adresního prostoru, který se logicky liší od virtuální sítě, ale má škálování a další omezení. Následující tabulka obsahuje podrobné porovnání mezi Kubenet a Azure CNI Overlay. Pokud nechcete přiřadit IP adresy virtuální sítě podům kvůli nedostatku IP adres, doporučujeme použít překrytí Azure CNI.

Plocha Azure CNI Overlay Kubenet
Škálování clusteru 5000 uzlů a 250 pods/uzel 400 uzlů a 250 podů na uzel
Konfigurace sítě Jednoduché – pro sítě podů se nevyžadují žádné další konfigurace. Složité – vyžaduje směrovací tabulky a uživatelsky definované trasy (UDR) v podsíti clusteru pro síťování podů.
Výkon připojení podů Výkon srovnatelný s virtuálními počítači ve virtuální síti Další skok přidává latenci
Zásady sítě Kubernetes Zásady sítě Azure, Calico, Cilium Kaliko
Podporované platformy operačního systému Linux a Windows Server 2022, 2019 Jenom Linux

Plánování IP adres

  • Uzly clustru: Při nastavování AKS clustru se ujistěte, že podsítě mají dostatek prostoru pro budoucí škálování. Každý fond uzlů můžete přiřadit k vyhrazené podsíti. Podsíť /24může obsahovat až 251 uzlů, protože první tři IP adresy jsou vyhrazené pro úlohy správy.
  • Pody: Řešení překrytí přiřadí adresní prostor pro pody na každém uzlu z privátního CIDR, který zadáte při vytváření clusteru. Velikost /24 je pevná a nedá se zvětšit ani zmenšit. Na uzlu můžete spustit až 250 podů. Při plánování adresního prostoru podu se ujistěte, že je soukromý CIDR dostatečně velký, aby pro nové uzly bylo dostatečně mnoho adresních prostorů na podporu budoucího rozšíření clusteru.
    • Při plánování adresního prostoru IP adres pro pody zvažte následující faktory:
      • Stejný prostor CIDR podu lze použít na několika nezávislých clusterech AKS ve stejné virtuální síti.
      • Prostor CIDR podů se nesmí překrývat s rozsahem podsítě clusteru.
      • Prostor CIDR se nesmí překrývat s přímo připojenými sítěmi (jako je propojení virtuálních sítí, ExpressRoute nebo VPN). Pokud externí provoz obsahuje zdrojové IP adresy v rozsahu podCIDR, potřebuje překlad na nepřekrývající se IP adresu přes SNAT pro komunikaci s clusterem.
  • Rozsah adres služby Kubernetes: Velikost adresy služby CIDR závisí na počtu služeb clusteru, které plánujete vytvořit. Musí být menší než /12. Tento rozsah by se neměl překrývat s rozsahem podsítě CIDR, rozsahem podsítě clusteru a rozsahem IP adres používaným v propojených virtuálních sítích a podnikových sítích.
  • IP adresa služby DNS Kubernetes: Tato IP adresa je v rozsahu adres služby Kubernetes, který používá zjišťování služeb clusteru. Nepoužívejte první IP adresu v rozsahu adres, protože je používána pro kubernetes.default.svc.cluster.local.

Důležité

Privátní rozsahy pro Pod CIDR jsou definovány v dokumentu RFC 1918. I když neblokujeme použití rozsahů veřejných IP adres, považují se za mimo rozsah podpory Microsoftu. Pro CIDR podu doporučujeme používat rozsahy privátních IP adres.

Skupiny zabezpečení sítě

Provoz mezi pody pomocí Azure CNI Overlay není zapouzdřený a použijí se pravidla skupiny zabezpečení sítě podsítě. Pokud skupina zabezpečení sítě podsítě obsahuje pravidla zamítnutí, která by ovlivnila provoz CIDR podů, ujistěte se, že jsou splněna následující pravidla pro zajištění správné funkčnosti clusteru (kromě všech požadavků na výchozí přenos dat AKS):

  • Provoz z uzlu CIDR do uzlu CIDR na všech portech a protokolech
  • Provoz z uzlu CIDR do podu CIDR na všech portech a protokolech (vyžadovaných pro směrování provozu služby)
  • Provoz z CIDR podu do CIDR podu na všech portech a protokolech (vyžadovaný pro provoz mezi pody a z podu do služby, včetně DNS)

Provoz z podu do jakéhokoli cíle mimo blok CIDR podu využívá SNAT ke změně zdrojové IP adresy na IP adresu uzlu, na kterém pod běží.

Pokud chcete omezit provoz mezi úlohami v clusteru, doporučujeme použít zásady sítě.

Maximální počet podů na uzel

Maximální počet podů na uzel můžete nakonfigurovat při vytváření clusteru nebo při přidání nového fondu uzlů. Výchozí hodnota pro překrytí Azure CNI je 250. Maximální hodnota, kterou můžete zadat v překrytí Azure CNI, je 250 a minimální hodnota je 10. Maximální počet podů na hodnotu uzlu nakonfigurovanou při vytváření fondu uzlů se vztahuje pouze na uzly v daném fondu uzlů.

Volba síťového modelu, který se má použít

Azure CNI nabízí dvě možnosti přidělování IP adres pro pody: tradiční konfigurace, která přiřazuje IP adresy virtuálních sítí podům a překryvné sítě. Volba, kterou možnost použít pro cluster AKS, je vyvážená mezi flexibilitou a pokročilými potřebami konfigurace. Následující aspekty vám pomůžou zjistit, kdy může být každý síťový model nejvhodnější.

Použití překryvných sítí v případech:

  • Chcete škálovat na velký počet podů, ale ve virtuální síti máte omezený adresní prostor IP adres.
  • Většina komunikace podů je v clusteru.
  • Nepotřebujete pokročilé funkce AKS, jako jsou virtuální uzly.

Tradiční možnost virtuální sítě použijte v následujících případech:

  • Máte k dispozici volný IP adresní prostor.
  • Většina komunikace podů je s prostředky mimo cluster.
  • Prostředky mimo cluster musí mít přímý přístup k podům.
  • Potřebujete pokročilé funkce AKS, jako jsou virtuální uzly.

Omezení Azure CNI Overlay

Azure CNI Overlay má následující omezení:

  • Skupiny dostupnosti virtuálních počítačů (VMAS) nejsou podporované pro funkci Overlay.
  • Virtuální počítače řady DCsv2 nemůžete používat ve fondech uzlů. Pokud chcete splnit požadavky důvěrného computingu, zvažte místo toho použití důvěrných virtuálních počítačů řady DCasv5 nebo DCadsv5.
  • V případě, že k nasazení clusteru používáte vlastní podsíť, musí názvy podsítě, virtuální sítě a skupiny prostředků obsahující virtuální síť obsahovat 63 znaků nebo méně. To vychází ze skutečnosti, že se tyto názvy použijí jako popisky v pracovních uzlech AKS, a proto se na ně vztahují pravidla syntaxe popisků Kubernetes.

Nastavení překryvných clusterů

Poznámka:

Abyste mohli argument použít --network-plugin-mode , musíte mít rozhraní příkazového řádku verze 2.48.0 nebo novější. Pro Windows musíte mít nainstalované nejnovější rozšíření Azure CLI aks-Preview a můžete postupovat podle následujících pokynů.

Vytvořte cluster s překrytím Azure CNI pomocí příkazu az aks create. Nezapomeňte použít argument --network-plugin-mode k určení překryvného clusteru. Pokud není pod CIDR zadaný, přiřadí AKS výchozí rozsah: viz. 10.244.0.0/16.

clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --pod-cidr 192.168.0.0/16 \
    --generate-ssh-keys

Přidat nový fond uzlů do vyhrazené podsítě

Po vytvoření clusteru s překrytím Azure CNI můžete vytvořit další fond uzlů a přiřadit je k nové podsíti stejné virtuální sítě. Tento přístup může být užitečný, pokud chcete řídit příchozí nebo výchozí IP adresy hostitele z nebo směrem k cílům ve stejné virtuální síti nebo partnerských virtuálních sítích.

clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"
nodepoolName="newpool1"
subscriptionId=$(az account show --query id -o tsv)
vnetName="yourVnetName"
subnetName="yourNewSubnetName"
subnetResourceId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnetName/subnets/$subnetName"
az aks nodepool add --resource-group $resourceGroup --cluster-name $clusterName \
  --name $nodepoolName --node-count 1 \
  --mode system --vnet-subnet-id $subnetResourceId

Dvouprotokolové sítě

Clustery AKS můžete nasadit v režimu duálního zásobníku při použití překryvných sítí a virtuální sítě Azure se dvěma zásobníky. V této konfiguraci uzly z podsítě virtuální sítě Azure obdrží adresu IPv4 i IPv6. Pody obdrží adresu IPv4 i IPv6 z logicky jiného adresního prostoru než podsítě uzlů virtuální sítě Azure. Překlad adres (NAT) se pak nakonfiguruje tak, aby pody mohly získat přístup k prostředkům ve virtuální síti Azure. Zdrojová IP adresa provozu je NATována na primární IP adresu uzlu stejné rodiny adres, (IPv4 na IPv4 a IPv6 na IPv6).

Požadavky

  • Musíte mít nainstalované Azure CLI 2.48.0 nebo novější.
  • Kubernetes verze 1.26.3 nebo novější.

Omezení

U sítí dvojího zásobníku nejsou podporovány následující funkce:

  • Zásady sítě Azure
  • Zásady sítě Calico
  • NAT Gateway
  • Doplněk Virtuální uzly

Nasazení dual-stack clusteru AKS

Následující atributy jsou poskytovány pro podporu dual-stack klastrů:

  • --ip-families: Vezme čárkami oddělený seznam rodin IP adres, které se mají povolit v clusteru.
    • Pouze ipv4 nebo ipv4,ipv6 jsou podporovány.
  • --pod-cidrs: Přijímá seznam rozsahů IP v notaci CIDR oddělený čárkami pro přiřazení IP adres podů.
    • Počet a pořadí rozsahů v tomto seznamu se musí shodovat s hodnotou zadanou pro --ip-families.
    • Pokud nejsou zadány žádné hodnoty, použije se výchozí hodnota 10.244.0.0/16,fd12:3456:789a::/64 .
  • --service-cidrs: Přebírá čárkami oddělený seznam IP rozsahů v notaci CIDR k přiřazení IP adres služby.
    • Počet a pořadí rozsahů v tomto seznamu se musí shodovat s hodnotou zadanou pro --ip-families.
    • Pokud nejsou zadány žádné hodnoty, použije se výchozí hodnota 10.0.0.0/16,fd12:3456:789a:1::/108 .
    • Přiřazená --service-cidrs podsíť IPv6 nesmí být větší než /108.

Vytvořte cluster AKS s duálním stackem

  1. Pomocí příkazu [az group create][az-group-create] vytvořte skupinu prostředků Azure pro cluster.

    az group create --location <region> --name <resourceGroupName>
    
  2. Vytvořte duální stack cluster AKS pomocí az aks create příkazu s parametrem nastaveným na ipv4,ipv6.

    az aks create \
        --location <region> \
        --resource-group <resourceGroupName> \
        --name <clusterName> \
        --network-plugin azure \
        --network-plugin-mode overlay \
        --ip-families ipv4,ipv6 \
        --generate-ssh-keys
    

Vytvoření ukázkové úlohy

Po vytvoření clusteru můžete nasadit své úlohy. Tento článek vás provede ukázkovým nasazením webového serveru NGINX.

Nasazení webového serveru NGINX

Doplněk směrování aplikace je doporučeným způsobem pro ingress v clusteru AKS. Další informace o doplňku směrování aplikace a příklad nasazení aplikace s doplňkem najdete v tématu Spravované příchozí přenosy dat NGINX pomocí doplňku směrování aplikace.

Zveřejnění úlohy prostřednictvím LoadBalancer služby typu

Důležité

V současné době platí dvě omezení týkající se služeb IPv6 v AKS.

  • Azure Load Balancer odesílá sondy stavu na IPv6 adresy z link-local adresy. Ve fondech uzlů Azure s Linuxem se tento provoz nedá směrovat do podu, takže provoz ke službám IPv6 nasazeným s externalTrafficPolicy: Cluster selžou. Služby IPv6 musí být nasazeny s externalTrafficPolicy: Local, které způsobuje, že kube-proxy reaguje na sondu na uzlu.
  • Před verzí 1.27 Kubernetes se pro nástroj pro vyrovnávání zatížení zřídí pouze první IP adresa služby, takže duální zásobník služby přijímá veřejnou IP adresu pouze pro rodinu IP adres uvedenou jako první. Pokud chcete poskytnout službu podporující jak IPv4, tak IPv6 pro jedno nasazení, vytvořte dvě služby, které cílí na stejný selektor: jednu pro IPv4 a jednu pro IPv6. Toto omezení už neplatí v kubernetes 1.27 nebo novějším.
  1. Zveřejnění nasazení NGINX pomocí kubectl expose deployment nginx příkazu

    kubectl expose deployment nginx --name=nginx-ipv4 --port=80 --type=LoadBalancer'
    kubectl expose deployment nginx --name=nginx-ipv6 --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilies": ["IPv6"]}}'
    

    Zobrazí se výstup, který ukazuje, že služby byly vystaveny.

    service/nginx-ipv4 exposed
    service/nginx-ipv6 exposed
    
  2. Jakmile se nasazení zveřejní a služby LoadBalancer jsou plně zřízené, pomocí příkazu kubectl get services získejte IP adresy služeb.

    kubectl get services
    
    NAME         TYPE           CLUSTER-IP               EXTERNAL-IP         PORT(S)        AGE
    nginx-ipv4   LoadBalancer   10.0.88.78               20.46.24.24         80:30652/TCP   97s
    nginx-ipv6   LoadBalancer   fd12:3456:789a:1::981a   2603:1030:8:5::2d   80:32002/TCP   63s
    
  3. Ověřte funkčnost prostřednictvím webového požadavku příkazového řádku z hostitele podporujícího protokol IPv6. Azure Cloud Shell nepodporuje protokol IPv6.

    SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    curl -s "http://[${SERVICE_IP}]" | head -n5
    
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
    

Duální zásobníkové sítě s využitím Azure CNI provozované pomocí Cilium

Clustery AKS s duálním stackem můžete nasadit pomocí Azure CNI s podporou Cilium. To vám také umožní řídit provoz IPv6 pomocí modulu zásad sítě Cilium.

Požadavky

  • Musíte mít Kubernetes verze 1.29 nebo novější.

Nastavení překryvných clusterů pomocí Azure CNI poháněné Cilium

Vytvořte cluster s Azure CNI Overlay pomocí příkazu az aks create. Nezapomeňte použít argument --network-dataplane cilium k určení datové roviny Cilium.

clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --network-dataplane cilium \
    --ip-families ipv4,ipv6 \
    --generate-ssh-keys

Další informace o Azure CNI Powered by Cilium najdete v tématu Azure CNI Powered by Cilium.

Fondy uzlů Windows s dvojím stohováním sítě – (Preview)

Můžete nasadit své dual-stack clustery AKS s uzlovými fondy Windows.

Důležité

Funkce AKS v předběžné verzi jsou k dispozici na samoobslužné bázi s možností volby. Verze Preview jsou poskytovány "tak, jak jsou a jak jsou dostupné" a jsou vyloučeny ze smluv o úrovni služeb a omezené záruky. Verze Preview AKS jsou částečně pokryty zákaznickou podporou na základě maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Instalace rozšíření Azure CLI aks-Preview

  • Nainstalujte rozšíření aks-preview pomocí az extension add příkazu.

    az extension add --name aks-preview
    
  • Aktualizujte na nejnovější verzi rozšíření pomocí příkazu az extension update.

    az extension update --name aks-preview
    

Zaregistrujte příznak funkce 'AzureOverlayDualStackPreview'

  1. Zaregistrujte příznak funkce AzureOverlayDualStackPreview pomocí příkazu az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
    

    Zobrazení stavu Zaregistrované trvá několik minut.

  2. Pomocí příkazu ověřte stav az feature show registrace:

    az feature show --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
    
  3. Jakmile se stav projeví jako zaregistrovaný, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí az provider register příkazu.

    az provider register --namespace Microsoft.ContainerService
    

Nastavení překryvného clusteru

Vytvořte cluster s Azure CNI Overlay pomocí příkazu az aks create.

clusterName="myOverlayCluster"
resourceGroup="myResourceGroup"
location="westcentralus"

az aks create \
    --name $clusterName \
    --resource-group $resourceGroup \
    --location $location \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --ip-families ipv4,ipv6 \
    --generate-ssh-keys

Přidání fondu uzlů Windows do clusteru

Přidejte do clusteru fond uzlů Windows pomocí příkazu [az aks nodepool add][az-aks-nodepool-add].

az aks nodepool add \
    --resource-group $resourceGroup \
    --cluster-name $clusterName \
    --os-type Windows \
    --name winpool1 \
    --node-count 2

Další kroky

Informace o upgradu existujících clusterů na překryvné vrstvy Azure CNI najdete v tématu Upgrade režimů IPAM Azure CNI a technologie roviny dat.

Informace o tom, jak využívat AKS s vlastním pluginem Container Network Interface (CNI), najdete v tématu Vlastní plugin Container Network Interface (CNI).