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 stöds endast tjänstobjekt med
externalTrafficPolicy: Local. - 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-överlägg krävs
Förutsättningar
- AKS-kluster med dubbla staplar kräver Kubernetes version v1.21.2 eller senare. v1.22.2 eller senare rekommenderas.
- Om du använder Azure Resource Manager-mallar krävs schemaversion 2021-10-01.
Ö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 dubbelstack-konfiguration 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 Dualstack 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 eller inte. Om du inte har någon standardväg för IPv6 visas en varning när du skapar ett kluster, men förhindrar inte att klustret skapas.
Distribuera ett kluster med dubbla staplar
Följande attribut tillhandahålls för att stödja kluster med dubbla staplar:
-
--ip-families: Tar en kommaavgränsad lista över IP-familjer som ska aktiveras i klustret.- Endast
ipv4elleripv4,ipv6stöds.
- Endast
-
--pod-cidrs: Tar en kommaavgränsad lista över IP-intervall i CIDR-notation att tilldela pod-IP-adresser från.- Antalet och ordningen på intervallen i den här listan måste matcha värdet som anges till
--ip-families. - Om inga värden anges används standardvärdet
10.244.0.0/16,fd12:3456:789a::/64.
- Antalet och ordningen på intervallen i den här listan måste matcha värdet som anges till
-
--service-cidrs: Tar en kommaavgränsad lista över IP-intervall i CIDR-notation från vilken tjänst-IP-adresser tilldelas.- Antalet och ordningen på intervallen i den här listan måste matcha värdet som anges till
--ip-families. - Om inga värden anges används standardvärdet
10.0.0.0/16,fd12:3456:789a:1::/108. - Det IPv6-undernät som tilldelats får
--service-cidrsinte vara större än /108.
- Antalet och ordningen på intervallen i den här listan måste matcha värdet som anges till
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> \ --ip-families ipv4,ipv6 \ --generate-ssh-keysNär klustret har skapats hämtar du autentiseringsuppgifterna för klusteradministratören
az aks get-credentialsmed 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äftar du att noderna har etablerats med nätverk med dubbla staplar med hjälp av
kubectl get nodeskommandot .kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"Utdata från
kubectl get nodeskommandot 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
När klustret har skapats kan du distribuera dina arbetsbelastningar. Den här artikeln beskriver ett exempel på en arbetsbelastningsdistribution av en NGINX-webbserver.
Distribuera en NGINX-webbserver
Skapa en NGINX-webbserver med kommandot
kubectl create deployment nginx.kubectl create deployment nginx --image=nginx:latest --replicas=3Visa pod-resurserna med 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!
Från och med AKS v1.27 kan du skapa en dubbelstack LoadBalancer-tjänst som tillhandahålls med en offentlig IPv4-adress och en offentlig IPv6-adress. I äldre versioner etableras dock endast den första IP-adressen för en tjänst av lastbalanseraren, så en tjänst med dubbelstack får bara en offentlig IP-adress för sin första IP-familj. Om du vill tillhandahålla en tjänst med dubbla staplar för en enda distribution skapar du två tjänster som riktar sig till samma väljare, en för IPv4 och en för IPv6.
AKS från v1.27
Exponera NGINX-distributionen med kommandot
kubectl expose deployment nginx.kubectl expose deployment nginx --name=nginx --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilyPolicy": "PreferDualStack", "ipFamilies": ["IPv4", "IPv6"]}}'Du får utdata som visar att tjänsterna har exponerats.
service/nginx exposedNär distribueringen är exponerad och
LoadBalancertjänsterna har etablerats fullständigt, hämta IP-adresserna för tjänsterna med kommandotkubectl get services.kubectl get servicesNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx LoadBalancer 10.0.223.73 2603:1030:20c:9::22d,4.156.88.133 80:30664/TCP 2m11skubectl get services nginx -ojsonpath='{.spec.clusterIPs}'["10.0.223.73","fd17:d93e:db1f:f771::54e"]Verifiera funktioner via en kommandoradswebbbegäran från en IPv6-kompatibel värd. Azure Cloud Shell är inte IPv6-kompatibelt.
SERVICE_IP=$(kubectl get services nginx -o jsonpath='{.status.loadBalancer.ingress[1].ip}') curl -s "http://[${SERVICE_IP}]" | head -n5<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style>
AKS äldre än v1.27
Exponera NGINX-distributionen med kommandot
kubectl 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":{"ipFamilies": ["IPv6"]}}'Du får utdata som visar att tjänsterna har exponerats.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedNär distribueringen är exponerad och
LoadBalancertjänsterna har etablerats fullständigt, hämta IP-adresserna för tjänsterna 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 via en kommandoradswebbbegäran från en IPv6-kompatibel värd. Azure Cloud Shell är inte IPv6-kompatibelt.
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>