Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klastry usługi AKS można wdrożyć w trybie podwójnego stosu w przypadku korzystania z sieci wirtualnej platformy Azure z podwójnym stosem. W tej konfiguracji węzły otrzymują zarówno adres IPv4, jak i IPv6 z podsieci sieci wirtualnej platformy Azure. Zasobniki otrzymują zarówno adres IPv4, jak i IPv6 z logicznie innej przestrzeni adresowej niż podsieć węzłów sieci wirtualnej platformy Azure. Translacja adresów sieciowych (NAT) jest następnie konfigurowana, aby pody mogły uzyskiwać dostęp do zasobów w sieci wirtualnej platformy Azure. Źródłowy adres IP ruchu jest poddawany translacji NAT do podstawowego adresu IP węzła w tej samej rodzinie (IPv4 do IPv4 i IPv6 do IPv6).
W tym artykule pokazano, jak używać sieci podwójnego stosu z klastrem usługi AKS. Aby uzyskać więcej informacji na temat opcji i zagadnień dotyczących sieci, zobacz Pojęcia dotyczące sieci dla platform Kubernetes i AKS.
Ważne
Począwszy od 30 listopada 2025 r., usługa Azure Kubernetes Service (AKS) nie obsługuje już ani nie zapewnia aktualizacji zabezpieczeń dla systemu Azure Linux 2.0. Obraz węzła systemu Azure Linux 2.0 jest zamrożony w wydaniu202512.06.0. Od 31 października 2026 r. obrazy węzłów zostaną usunięte i nie będzie można skalować pul węzłów. Przeprowadź migrację do obsługiwanej wersji systemu Linux platformy Azure, uaktualniając pule węzłów do obsługiwanej wersji rozwiązania Kubernetes lub migrując do systemu osSku AzureLinux3. Aby uzyskać więcej informacji, zobacz kwestię na GitHub dotyczącą wycofania i ogłoszenie o wycofaniu aktualizacji Azure. Aby być na bieżąco z ogłoszeniami i aktualizacjami, śledź informacje o wersji usługi AKS.
Ograniczenia
- W pulach węzłów systemu Linux na platformie Azure usługi IPv6 wymagają
externalTrafficPolicy: Local. - Sieć dwustosowa jest wymagana dla sieci wirtualnej platformy Azure i zasobnika CIDR.
- Korzystanie z jednostkowego stosu wyłącznie IPv6 nie jest obsługiwane dla adresów IP węzłów ani pod. Usługi można aprowizować na adresach IPv4 lub IPv6.
- Nakładka Azure CNI nie obsługuje zasad sieciowych Azure ani Calico w sieci dual-stack. Aby użyć zasad sieciowych, użyj Azure CNI obsługiwanej przez cilium.
- Standardowa brama NAT obsługuje wyłącznie protokół IPv4. W przypadku ruchu wychodzącego w konfiguracji dual-stack użyj bramy NAT StandardV2. Typ ruchu wychodzącego zarządzany przez usługę AKS
managedNATGatewayV2jest w wersji zapoznawczej. - Dodatek węzłów wirtualnych nie jest obsługiwany w sieci dual-stack.
Wymagania wstępne
- Azure CLI w wersji 2.48.1 lub nowszej. Uruchom polecenie
az --version, aby znaleźć zainstalowaną wersję. Aby zainstalować lub uaktualnić Azure CLI, zobacz Instalowanie Azure CLI. - Użyj obsługiwanej wersji rozwiązania Kubernetes w usłudze AKS dostępnej w Twoim regionie.
W tym artykule użyto funkcji Azure CNI Overlay. Klaster z podwójnym stosem można również wdrożyć za pomocą usługi Azure CNI obsługiwanej przez cilium w klastrach systemu Linux z uruchomioną platformą Kubernetes w wersji 1.29 lub nowszej.
Omówienie sieci z podwójnym stosem na platformie Kubernetes
Platforma Kubernetes w wersji 1.23 zapewnia stabilną obsługę klastrów z dualnym stosem IPv4/IPv6, w tym sieci zasobników i usług. Węzły i pody są zawsze przypisywane zarówno adresy IPv4, jak i IPv6, podczas gdy usługi mogą być dwustosowe lub jednostosowe w każdej rodzinie adresów.
Usługa AKS konfiguruje wymagane usługi pomocnicze dla sieci z dwoma stosami. Ta konfiguracja obejmuje:
- Jeśli używasz zarządzanej sieci wirtualnej, to konfiguracja sieci wirtualnej z obsługą dwóch stosów.
- Adresy węzłów i zasobników IPv4 i IPv6.
- Reguły ruchu wychodzącego dla ruchu IPv4 i IPv6.
- Konfiguracja modułu równoważenia obciążenia dla usług IPv4 i IPv6.
Uwaga
W przypadku korzystania z sieci dwustosowej z typem ruchu wychodzącego zdefiniowanego przez użytkownika możesz wybrać domyślną trasę dla protokołu IPv6 w zależności od tego, czy ruch IPv6 jest potrzebny do dotarcia do Internetu. Jeśli nie masz trasy domyślnej dla protokołu IPv6, podczas tworzenia klastra zostanie wyświetlone ostrzeżenie, ale nie uniemożliwia tworzenia klastra.
Parametry klastra z podwójnym stosem
Następujące parametry obsługują klastry z dwoma stosami:
| Parametr | Dopuszczalne wartości | Wartość domyślna | Ograniczenia |
|---|---|---|---|
--ip-families |
ipv4 lub ipv4,ipv6 |
Nieokreślona | Podaj rozdzielaną przecinkami listę rodzin adresów IP, które mają być włączone w klastrze. |
--pod-cidrs |
Rozdzielone przecinkami zakresy CIDR | 10.244.0.0/16,fd12:3456:789a::/64 |
Liczba i kolejność zakresów muszą być zgodne z --ip-families. |
--service-cidrs |
Rozdzielone przecinkami zakresy CIDR | 10.0.0.0/16,fd12:3456:789a:1::/108 |
Liczba i kolejność zakresów muszą być zgodne z --ip-families. Podsieć IPv6 nie może być większa niż /108. |
Wdróż klaster AKS z podwójnym stosem
Utwórz grupę zasobów platformy Azure dla klastra przy użyciu
az group createpolecenia .az group create --location <region> --name <resourceGroupName>Utwórz klaster AKS z podwójnym stosem za pomocą polecenia
az aks create, w którym parametr--ip-familiesjest ustawiony 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 utworzeniu klastra pobierz poświadczenia klastra przy użyciu
az aks get-credentialspolecenia .az aks get-credentials --resource-group <resourceGroupName> --name <clusterName>
Sprawdź węzły, aby zobaczyć obie rodziny adresów IP
Po utworzeniu klastra potwierdź za pomocą polecenia kubectl get nodes, że węzły zostały skonfigurowane z obsługą podwójnego stosu sieciowego.
kubectl get nodes -o=custom-columns="NAME:.metadata.name,ADDRESSES:.status.addresses[?(@.type=='InternalIP')].address,PODCIDRS:.spec.podCIDRs[*]"
Wynik polecenia kubectl get nodes pokazuje, że węzły mają adresy i przestrzeń adresową IP zasobników zarówno z IPv4, jak 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
Tworzenie przykładowego obciążenia
Wdróż serwer WWW NGINX z trzema replikami, aby zweryfikować przydzielanie adresów IP podom w konfiguracji dual-stack.
Wdrażanie serwera internetowego NGINX
Utwórz serwer internetowy NGINX, uruchamiając
kubectl create deployment nginxpolecenie .kubectl create deployment nginx --image=nginx:latest --replicas=3Wyświetl zasoby zasobnika, uruchamiając polecenie
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"Dane wyjściowe pokazują, że zasobniki mają adresy IPv4 i IPv6. Zasobniki nie wyświetlają adresów IP, dopóki nie będą gotowe.
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
Udostępnij obciążenie za pomocą usługi typu LoadBalancer
Ważne
Usługa Azure Load Balancer wysyła sondy kondycji do miejsc docelowych IPv6 z adresu link-local. W pulach węzłów Azure Linux ruch do usług IPv6, które korzystają z externalTrafficPolicy: Cluster, kończy się niepowodzeniem. Poniższe przykłady ustawiają externalTrafficPolicy: Local dla usługi IPv6, tak aby kube-proxy odpowiadał na próbnik na węźle.
Uwidaczniaj wdrożenie serwera NGINX przy użyciu oddzielnych usług IPv4 i IPv6
LoadBalancerza pomocąkubectl expose deployment nginxpolecenia .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"]}}'Otrzymasz dane wyjściowe, które pokazują, że usługi są uwidocznione.
service/nginx-ipv4 exposed service/nginx-ipv6 exposedPo udostępnieniu wdrożenia i pełnym aprowizowaniu usług
LoadBalanceruzyskaj adresy IP usług za pomocą poleceniakubectl 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 63sZweryfikuj działanie z poziomu maszyny wirtualnej z systemem Linux lub komputera lokalnego z przypisanym adresem IPv6 i skonfigurowanym routingiem IPv6. Azure Cloud Shell nie obsługuje protokołu 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>