Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Clustery AKS můžete nasadit v režimu duálního zásobníku při použití 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 datového provozu je překládána NAT na primární IP adresu uzlu stejné rodiny (IPv4 na IPv4 a IPv6 na IPv6).
V tomto článku se dozvíte, jak používat duální zásobníkovou síť s clusterem AKS. Další informace o možnostech a aspektech sítě najdete v tématu Koncepty sítě pro Kubernetes a AKS.
Důležité
Od 30. listopadu 2025 už Azure Kubernetes Service (AKS) nepodporuje ani neposkytuje aktualizace zabezpečení pro Azure Linux 2.0. Bitová kopie uzlu Azure Linux 2.0 je zmrazená na vydání 202512.06.0. Od 31. října 2026 se image uzlů odeberou a nebudete moct škálovat fondy uzlů. Přejděte na podporovanou verzi Azure Linuxu aktualizací poolů uzlů na podporovanou verzi Kubernetes nebo migrací na osSku AzureLinux3. Další informace najdete v tématu Problém s vyřazením z GitHubu a oznámení o vyřazení aktualizací Azure. Pokud chcete mít přehled o oznámeních a aktualizacích, postupujte podle poznámek k verzi AKS.
Omezení
- V poolech uzlů Azure Linux vyžadují služby IPv6
externalTrafficPolicy: Local. - Pro duální síťování se vyžaduje virtuální síť Azure a CIDR podsítě.
- Jednorázová konfigurace pouze s IPv6 není podporována pro IP adresy uzlů nebo podů. Služby je možné zřídit v IPv4 nebo IPv6.
- Azure CNI Overlay nepodporuje síťové zásady Azure ani Calico v dual-stack sítích. Pokud chcete používat zásady sítě, použijte Azure CNI Powered by Cilium.
- Standard NAT Gateway podporuje jenom protokol IPv4. Pro odchozí provoz v režimu dual-stack použijte StandardV2 NAT Gateway. Odchozí typ
managedNATGatewayV2, spravovaný AKS, je ve verzi Preview. - Doplněk virtuálních uzlů není podporován při použití sítě s duálním zásobníkem.
Požadavky
- Azure CLI verze 2.48.1 nebo novější. Spuštěním
az --versionvyhledejte nainstalovanou verzi. Pokud chcete nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI. - Použijte podporovanou verzi Kubernetes v AKS , která je dostupná ve vaší oblasti.
V tomto článku se používá Azure CNI Overlay. Můžete také nasadit cluster se dvěma zásobníky s Azure CNI powered by Cilium na clusterech s Linuxem, na kterých běží Kubernetes verze 1.29 nebo novější.
Přehled dual-stack sítí v Kubernetes
Kubernetes v1.23 přináší stabilní upstream podporu pro clustery s duálním IPv4/IPv6 zásobníkem, včetně sítí podů a služeb. Uzly a pody jsou vždy přiřazeny jak IPv4, tak IPv6 adresou, zatímco služby mohou být duální nebo jednoúčelové na obou typech adres.
AKS nastavuje požadované podpůrné služby pro duální zásobníkovou síť. Tato konfigurace zahrnuje:
- Pokud používáte spravovanou virtuální síť, konfigurace virtuální sítě se dvěma zásobníky.
- Adresy uzlů IPv4 a IPv6 a podů
- Odchozí pravidla pro provoz IPv4 i IPv6
- Nastavení nástroje pro vyrovnávání zatížení pro služby IPv4 a IPv6
Poznámka:
Pokud používáte dvouzásobníkové sítě s typem odchozí komunikace nastaveným na směrování definované uživatelem, můžete zvolit výchozí trasu pro IPv6 v závislosti na tom, zda potřebujete, aby váš provoz IPv6 měl přístup na internet. Pokud nemáte výchozí trasu pro protokol IPv6, zobrazí se při vytváření clusteru upozornění, ale nezabrání vytvoření clusteru.
Parametry clusteru s duálním stackem
Následující parametry podporují clustery se dvěma zásobníky:
| Parameter | Přípustné hodnoty | Výchozí hodnota | Omezení |
|---|---|---|---|
--ip-families |
ipv4 nebo ipv4,ipv6 |
Neurčeno | Zadejte čárkami oddělený seznam rodin IP adres, které se mají povolit v clusteru. |
--pod-cidrs |
Rozsahy CIDR oddělené čárkami | 10.244.0.0/16,fd12:3456:789a::/64 |
Počet a pořadí rozsahů se musí shodovat --ip-families. |
--service-cidrs |
Rozsahy CIDR oddělené čárkami | 10.0.0.0/16,fd12:3456:789a:1::/108 |
Počet a pořadí rozsahů se musí shodovat --ip-families. Podsíť IPv6 nesmí být větší než /108. |
Nasazení duálního stackového clusteru AKS
Pomocí příkazu vytvořte skupinu prostředků Azure pro cluster
az group create.az group create --location <region> --name <resourceGroupName>Vytvořte cluster AKS s podporou dvou protokolů pomocí příkazu
az aks creates parametrem--ip-familiesnastaveným 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-keysPo vytvoření clusteru pomocí příkazu získejte přihlašovací údaje clusteru
az aks get-credentials.az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Kontrola uzlů a zobrazení obou rodin IP adres
Po zřízení clusteru pomocí příkazu ověřte, že uzly jsou zřízené pomocí sítě kubectl get nodes se dvěma zásobníky.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
Výstup z kubectl get nodes příkazu ukazuje, že uzly mají adresy a prostor pro přiřazení IP adres podů z IPv4 i IPv6.
NAME ADDRESSES PODCIDRS
aks-nodepool1-14508455-vmss000000 10.240.0.4,2001:1234:5678:9abc::4 10.244.0.0/24,fd12:3456:789a::/80
aks-nodepool1-14508455-vmss000001 10.240.0.5,2001:1234:5678:9abc::5 10.244.1.0/24,fd12:3456:789a:0:1::/80
aks-nodepool1-14508455-vmss000002 10.240.0.6,2001:1234:5678:9abc::6 10.244.2.0/24,fd12:3456:789a:0:2::/80
Vytvoření ukázkové úlohy
Nasaďte webový server NGINX se třemi replikami, abyste ověřili přiřazení IP adres podů v režimu duálního zásobníku.
Nasazení webového serveru NGINX
- kubectl
- YAML
Spuštěním
kubectl create deployment nginxpříkazu vytvořte webový server NGINX.kubectl create deployment nginx --image=nginx:latest --replicas=3Spuštěním příkazu zobrazte prostředky podu
kubectl get pods.kubectl get pods -o custom-columns="NAME:.metadata.name,IPs:.status.podIPs[*].ip,NODE:.spec.nodeName,READY:.status.conditions[?(@.type=='Ready')].status"Výstup ukazuje, že pody mají adresy IPv4 i IPv6. Pody nezobrazují IP adresy, dokud nebudou připravené.
NAME IPs NODE READY nginx-55649fd747-9cr7h 10.244.2.2,fd12:3456:789a:0:2::2 aks-nodepool1-14508455-vmss000002 True nginx-55649fd747-p5lr9 10.244.0.7,fd12:3456:789a::7 aks-nodepool1-14508455-vmss000000 True nginx-55649fd747-r2rqh 10.244.1.2,fd12:3456:789a:0:1::2 aks-nodepool1-14508455-vmss000001 True
Zveřejněte pracovní zátěž pomocí služby typu LoadBalancer.
Důležité
Azure Load Balancer odesílá sondy stavu na IPv6 adresy z link-local adresy. Na fondech uzlů Azure Linux selhává provoz směrovaný na služby IPv6, které používají externalTrafficPolicy: Cluster. Následující příklady nastavují externalTrafficPolicy: Local u služby IPv6 tak, aby kube-proxy reagovalo na testovací požadavek na uzlu.
- kubectl
- YAML
Pomocí příkazu zpřístupníte nasazení NGINX s samostatnými službami
kubectl expose deployment nginxIPv4 a IPv6LoadBalancer.kubectl expose deployment nginx --name=nginx-ipv4 --port=80 --type=LoadBalancer kubectl expose deployment nginx --name=nginx-ipv6 --port=80 --type=LoadBalancer --overrides='{"spec":{"externalTrafficPolicy":"Local","ipFamilies":["IPv6"]}}'Zobrazí se výstup, který ukazuje, že jsou služby vystavené.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedJakmile zpřístupníte nasazení a plně zprovozníte služby
LoadBalancer, získejte IP adresy služeb pomocí příkazukubectl get services.kubectl get servicesNAME 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 63sOvěřte funkčnost z virtuálního počítače s Linuxem nebo místním počítačem s nakonfigurovanou adresou IPv6 a nakonfigurovaným směrováním 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>