Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan distribuera dina AKS-kluster i ett läge med dubbla staplar när du använder ett virtuellt Azure-nätverk med dubbla staplar. I den här konfigurationen får noderna både en IPv4- och IPv6-adress från det virtuella Azure-nätverkets undernät. Poddar får både en IPv4- och IPv6-adress från ett logiskt annat adressutrymme än det virtuella Azure-nätverksundernätet för noderna. NAT (Network Address Translation) konfigureras sedan så att poddarna kan komma åt resurser i Azure Virtual Network. Källa IP-adressen för trafiken översätts med NAT till nodens primära IP-adress inom samma IP-familj (IPv4 till IPv4 och IPv6 till IPv6).
Den här artikeln visar hur du använder nätverk med dubbla staplar med ett AKS-kluster. Mer information om nätverksalternativ och överväganden finns i Nätverksbegrepp för Kubernetes och AKS.
Viktigt!
Från och med den 30 november 2025 har Azure Kubernetes Service (AKS) inte längre stöd för eller tillhandahåller säkerhetsuppdateringar för Azure Linux 2.0. Azure Linux 2.0-nodbilden är låst i 202512.06.0-versionen. Från och med den 31 mars 2026 tas nodbilder bort och du kan inte skala dina nodpooler. Migrera till en Azure Linux-version som stöds genom att uppgradera dina nodpooler till en Kubernetes-version som stöds eller migrera till osSku AzureLinux3. Mer information finns i GitHub-ärende om avveckling och Azure Updates avvecklingsmeddelande. För att hålla dig informerad om meddelanden och uppdateringar, följ AKS versionsinformation.
Begränsningar
- I Azure Linux-nodpooler kräver
externalTrafficPolicy: LocalIPv6-tjänster . - Nätverk med dubbla staplar krävs för det virtuella Azure-nätverket och podd-CIDR.
- IPv6 i endast enstaka stack stöds inte för nod- eller podd-IP-adresser. Tjänster kan etableras på IPv4 eller IPv6.
- Azure CNI Overlay stöder inte Azure eller Calico-nätverksprinciper med dubbla stacknätverk. Om du vill använda nätverksprinciper använder du Azure CNI som drivs av Cilium.
- Standard-NAT Gateway stöder endast IPv4. För dual-stack-utgående trafik använder du StandardV2 NAT Gateway. Den AKS-hanterade utgående typen
managedNATGatewayV2är i förhandsversion. - Tillägget för virtuella noder stöds inte med nätverk med dubbla staplar.
Förutsättningar
- Azure CLI version 2.48.1 eller senare. Kör
az --versionför att hitta den installerade versionen. Information om hur du installerar eller uppgraderar Azure CLI finns i Installera Azure CLI. - Använd en Kubernetes-version som stöds i AKS som är tillgänglig i din region.
I den här artikeln används Azure CNI-överlägg. Du kan också distribuera ett kluster med dubbla staplar med Azure CNI som drivs av Cilium på Linux-kluster som kör Kubernetes version 1.29 eller senare.
Översikt över nätverk med dubbla staplar i Kubernetes
Kubernetes v1.23 ger stabilt överordnat stöd för IPv4/IPv6-kluster med dubbla staplar , inklusive podd- och tjänstnätverk. Noder och poddar tilldelas alltid både en IPv4- och en IPv6-adress, medan tjänster kan vara antingen dual-stack eller single-stack beroende på adressfamilj.
AKS konfigurerar nödvändiga stödtjänster för nätverk med dubbla staplar. Den här konfigurationen omfattar:
- Om du använder ett hanterat virtuellt nätverk, en konfiguration med dubbel stack för virtuella nätverk.
- IPv4- och IPv6-nod- och poddadresser.
- Regler för utgående trafik för både IPv4- och IPv6-trafik.
- Konfiguration av lastbalanserare för IPv4- och IPv6-tjänster.
Anmärkning
När du använder nätverk med dubbla staplar med en utgående typ av användardefinierad routning kan du välja att ha en standardväg för IPv6 beroende på om du behöver din IPv6-trafik för att nå Internet. Om du inte har någon standardväg för IPv6 visas en varning när du skapar ett kluster men inte förhindrar att klustret skapas.
Klusterparametrar med dubbla staplar
Följande parametrar stöder kluster med dubbla staplar:
| Parameter | Godkända värden | Standardvärdet | Constraints |
|---|---|---|---|
--ip-families |
ipv4 eller ipv4,ipv6 |
Har inte angetts | Ange en kommaavgränsad lista över IP-familjer som ska aktiveras i klustret. |
--pod-cidrs |
Kommaavgränsade CIDR-intervall | 10.244.0.0/16,fd12:3456:789a::/64 |
Antalet och ordningen för intervall måste matcha --ip-families. |
--service-cidrs |
Kommaavgränsade CIDR-intervall | 10.0.0.0/16,fd12:3456:789a:1::/108 |
Antalet och ordningen för intervall måste matcha --ip-families. IPv6-undernätet får inte vara större än /108. |
Distribuera ett AKS-kluster med dubbla staplar
Skapa en Azure-resursgrupp för klustret med hjälp av
az group createkommandot .az group create --location <region> --name <resourceGroupName>Skapa ett AKS-kluster med dubbla staplar med
az aks createkommandot med parametern inställd på--ip-familiesipv4,ipv6.az aks create \ --location <region> \ --resource-group <resourceGroupName> \ --name <clusterName> \ --network-plugin azure \ --network-plugin-mode overlay \ --ip-families ipv4,ipv6 \ --generate-ssh-keysNär du har skapat klustret hämtar du autentiseringsuppgifterna för
az aks get-credentialsklustret med hjälp av kommandot .az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Granska noderna för att se båda IP-familjerna
När klustret har etablerats, bekräfta att noderna är etablerade med dual-stack-nätverk genom att använda kommandot kubectl get nodes.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
Utdata från kubectl get nodes kommandot visar att noderna har adresser och podd-IP-tilldelningsutrymme från både IPv4 och 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
Skapa en exempelarbetsbelastning
Driftsätt en NGINX-webbserver med tre repliker för att verifiera dual stack-IP-tilldelning för poddar.
Distribuera en NGINX-webbserver
Skapa en NGINX-webbserver genom att
kubectl create deployment nginxköra kommandot .kubectl create deployment nginx --image=nginx:latest --replicas=3Visa poddresurserna genom att köra kommandot
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"Utdata visar att poddarna har både IPv4- och IPv6-adresser. Poddarna visar inte IP-adresser förrän de är klara.
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
Exponera belastningen via en LoadBalancer-tjänst
Viktigt!
Azure Load Balancer skickar hälsoprob till IPv6-mål från en länklokal adress. På Azure Linux-nodpooler misslyckas trafiken till IPv6-tjänster som använderexternalTrafficPolicy: Cluster. Följande exempel ställer in externalTrafficPolicy: Local på IPv6-tjänsten så att kube-proxy svarar på proben på noden.
Exponera NGINX-driftsättningen med separata IPv4- och IPv6-
LoadBalancertjänster med kommandotkubectl expose deployment nginx.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"]}}'Du får utdata som visar att tjänsterna exponeras.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedNär du har exponerat driftsättningen och fullständigt provisionerat
LoadBalancer-tjänsterna hämtar du tjänsternas IP-adresser med kommandotkubectl 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 63sVerifiera funktioner från en virtuell Linux-dator eller en lokal dator med en tilldelad IPv6-adress och konfigurerad IPv6-routning. Azure Cloud Shell stöder inte 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>