Konfigurace sítí Azure CNI Overlay ve službě Azure Kubernetes Service (AKS)
Tradiční rozhraní CNI (Container Networking Interface) Azure přiřadí ip adresu virtuální sítě ke každému podu. Přiřadí tuto IP adresu z předem rezervované sady IP adres na každém uzlu nebo samostatné podsíti 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 odlišné 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 se z podsítí přiřazují pouze uzly 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 horizontálním navýšení kapacity clusteru automaticky přijímají /24
adresní prostory ze stejného CIDR. Azure CNI přiřadí IP adresy podům z tohoto /24
prostoru.
V zásobníku sítí Azure pro privátní prostor CIDR podu se vytvoří samostatná doména směrování, která 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 parny virtuálních počítačů ve virtuální síti. Úlohy spuštěné v podech si ani neuvědomují, že probíhá manipulace se síťovými adresami.
Komunikace s koncovými body mimo cluster, jako jsou místní a partnerské virtuální sítě, probíhá pomocí IP adresy uzlu prostřednictvím překladu 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ýchozí) připojení k internetu můžete poskytnout pro překryvné pody pomocí Load Balanceru úrovně Standard nebo spravované služby NAT Gateway. Odchozí provoz můžete řídit také tak, že ho přesměrujete na bránu firewall pomocí tras definovaných uživatelem 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 Nginx nebo směrování aplikace HTTP. Připojení příchozího přenosu dat nejde nakonfigurovat pomocí brány Aplikace Azure. Podrobnosti najdete v tématu Omezení překrytí Azure CNI.
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 překrytím Kubenet a Azure CNI. 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 podů/uzlů | 400 uzlů a 250 podů/uzlů |
Konfigurace sítě | Jednoduché – pro sítě podů se nevyžadují žádné další konfigurace. | Složité – vyžaduje směrovací tabulky a trasy definované uživatelem v podsíti clusteru pro sítě podů. |
Výkon připojení podů | Výkon při analýze s virtuálními počítači ve virtuální síti | Další segment směrování 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 clusteru: Při nastavování clusteru AKS se ujistěte, že vaše podsítě virtuální sítě mají dostatek místa pro budoucí škálování. Každý fond uzlů můžete přiřadit k vyhrazené podsíti. Podsíť
/24
můž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í
/24
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 privátní CIDR dostatečně velký, aby poskytoval/24
adresní prostory pro nové uzly, aby podporovaly budoucí 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 podu se nesmí překrývat s přímo připojenými sítěmi (jako je partnerský vztah 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.
- Při plánování adresního prostoru IP adres pro pody zvažte následující faktory:
- 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 CIDR podsítě, rozsahem podsítí clusteru a rozsahem IP adres používanými v partnerských virtuálních sítích a místní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 tato adresa se používá pro
kubernetes.default.svc.cluster.local
tuto adresu.
Skupiny zabezpečení sítě
Provoz pod-to-pod s využitím překrytí Azure CNI 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ých pro provoz podů a podů do provozu, včetně DNS)
Provoz z podu do libovolného cíle mimo blok CIDR podu využívá SNAT k nastavení zdrojové IP adresy na IP adresu uzlu, na kterém se pod spouští.
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 adresní prostor IP adres.
- Většina komunikace podů je s prostředky mimo cluster.
- Prostředky mimo cluster se musí spojit přímo s pody.
- Potřebujete pokročilé funkce AKS, jako jsou virtuální uzly.
Omezení překrytí Azure CNI
Azure CNI Overlay má následující omezení:
- Application Gateway nemůžete použít jako kontroler příchozího přenosu dat (AGIC) pro překryvný cluster.
- Službu Application Gateway nemůžete použít pro kontejnery pro překryvný cluster.
- Skupiny dostupnosti virtuálních počítačů (VMAS) nejsou podporované pro překryvné vrstvy.
- 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ů.
Pomocí příkazu vytvořte cluster s překrytím az aks create
Azure CNI. Nezapomeňte použít argument --network-plugin-mode
k určení překryvného clusteru. Pokud není zadaný ciDR podu, přiřadí AKS výchozí mezeru: 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řidání nového fondu 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
Sítě se dvěma zásobníky
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 do podsítě virtuální sítě Azure uzlů. 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 NAT na primární IP adresu uzlu stejné rodiny (IPv4 až IPv4 a IPv6 až 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í
V sítích se dvěma zásobníky se nepodporují následující funkce:
- Zásady sítě Azure
- Zásady sítě Calico
- NAT Gateway
- Doplněk Virtuální uzly
Nasazení clusteru AKS se dvěma zásobníky
Pro podporu clusterů se dvěma zásobníky jsou k dispozici následující atributy:
--ip-families
: Vezme čárkami oddělený seznam rodin IP adres, které se mají povolit v clusteru.- Pouze
ipv4
neboipv4,ipv6
jsou podporovány.
- Pouze
--pod-cidrs
: Přebírá čárkami oddělený seznam rozsahů IP adres zápisu CIDR 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
.
- Počet a pořadí rozsahů v tomto seznamu se musí shodovat s hodnotou zadanou pro
--service-cidrs
: Přebírá čárkami oddělený seznam rozsahů IP adres zápisu CIDR pro 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.
- Počet a pořadí rozsahů v tomto seznamu se musí shodovat s hodnotou zadanou pro
Vytvoření clusteru AKS se dvěma zásobníky
Pomocí příkazu [
az group create
][az-group-create] vytvořte skupinu prostředků Azure pro cluster.az group create --location <region> --name <resourceGroupName>
Vytvořte cluster AKS se dvěma zásobníky pomocí
az aks create
příkazu s parametrem nastaveným--ip-families
naipv4,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 úlohy nasadit. 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 příchozí přenos dat 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 do cílů IPv6 z místní adresy odkazu. Ve fondech uzlů Azure s Linuxem se tento provoz nedá směrovat do podu, takže provoz do služeb IPv6 nasazených selžou
externalTrafficPolicy: Cluster
. Služby IPv6 musí být nasazeny se službouexternalTrafficPolicy: Local
, což způsobíkube-proxy
reakci na sondu na uzlu. - Před Kubernetes verze 1.27 se pro nástroj pro vyrovnávání zatížení zřídí jenom první IP adresa služby, takže služba se dvěma zásobníky přijímá pouze veřejnou IP adresu pro svou první uvedenou řadu IP adres. Pokud chcete poskytnout službu se dvěma zásobníky pro jedno nasazení, vytvořte dvě služby, které cílí na stejný selektor, jednu pro protokol IPv4 a jednu pro protokol IPv6. Toto omezení už neplatí v kubernetes 1.27 nebo novějším.
Zveřejnění nasazení NGINX pomocí
kubectl expose deployment nginx
příkazukubectl 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
Jakmile se nasazení zobrazí a
LoadBalancer
služby jsou plně zřízené, pomocí příkazu získejte IP adresy služebkubectl get services
.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
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>
Sítě se dvěma zásobníky s využitím Azure CNI s využitím Cilium – (Preview)
Clustery AKS se dvěma zásobníky můžete nasadit pomocí Azure CNI Powered by Cilium. To vám také umožní řídit provoz IPv6 pomocí modulu zásad sítě Cilium.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené 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:
Požadavky
- Musíte mít nejnovější verzi rozšíření AKS Preview.
- Musíte mít Kubernetes verze 1.29 nebo novější.
Instalace rozšíření Azure CLI aks-Preview
Nainstalujte rozšíření aks-preview pomocí
az extension add
příkazu.az extension add --name aks-preview
Pomocí příkazu aktualizujte na nejnovější verzi rozšíření vydaného.
az extension update
az extension update --name aks-preview
Registrace příznaku funkce AzureOverlayDualStackPreview
AzureOverlayDualStackPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace:az feature show --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
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ých clusterů pomocí Azure CNI powered by Cilium
Pomocí příkazu vytvořte cluster s překrytím az aks create
Azure CNI. Nezapomeňte použít argument --network-dataplane cilium
k určení datového 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 se dvěma zásobníky sítě – (Preview)
Clustery AKS se dvěma zásobníky můžete nasadit pomocí fondů uzlů Windows.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na samoobslužné bázi. Verze Preview jsou poskytovány "tak, jak jsou" a "dostupné", a jsou vyloučené 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
Pomocí příkazu aktualizujte na nejnovější verzi rozšíření vydaného.
az extension update
az extension update --name aks-preview
Registrace příznaku funkce AzureOverlayDualStackPreview
AzureOverlayDualStackPreview
Pomocí příkazu zaregistrujte příznakaz feature register
funkce.az feature register --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
Zobrazení stavu Zaregistrované trvá několik minut.
Pomocí příkazu ověřte stav
az feature show
registrace:az feature show --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
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
Pomocí příkazu vytvořte cluster s překrytím az aks create
Azure CNI.
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é rozhraní Azure CNI najdete v tématu Upgrade režimů IPAM služby Azure Kubernetes Service (AKS) a technologie roviny dat.
Informace o využití AKS s vlastním modulem plug-in Container Network Interface (CNI) najdete v tématu Používání vlastního modulu plug-in Container Network Interface (CNI).
Azure Kubernetes Service