Strefy dostępności w usłudze Azure Kubernetes Service (AKS)
Strefy dostępności pomagają chronić aplikacje i dane przed awariami centrum danych. Strefy to unikatowe lokalizacje fizyczne w regionie świadczenia usługi Azure. Każda strefa obejmuje co najmniej jedno centrum danych wyposażone w niezależne zasilanie, chłodzenie i sieć.
Użycie usługi AKS ze strefami dostępności fizycznie dystrybuuje zasoby w różnych strefach dostępności w jednym regionie, co zwiększa niezawodność. Wdrażanie węzłów w wielu strefach nie wiąże się z dodatkowymi kosztami.
W tym artykule pokazano, jak skonfigurować zasoby usługi AKS do używania Strefy dostępności.
Zasoby usługi AKS
Na tym diagramie przedstawiono zasoby platformy Azure tworzone podczas tworzenia klastra usługi AKS:
Płaszczyzna sterowania usługi AKS
Firma Microsoft hostuje płaszczyznę sterowania usługi AKS, serwer interfejsu API Kubernetes oraz usługi, takie jak scheduler
i etcd
jako usługa zarządzana. Firma Microsoft replikuje płaszczyznę sterowania w wielu strefach.
Inne zasoby klastra są wdrażane w zarządzanej grupie zasobów w ramach subskrypcji platformy Azure. Domyślnie ta grupa zasobów ma prefiks MC_ dla klastra zarządzanego i zawiera następujące zasoby:
Pule węzłów
Pule węzłów są tworzone jako zestaw skalowania maszyn wirtualnych w ramach subskrypcji platformy Azure.
Podczas tworzenia klastra usługi AKS jedna pula węzłów systemowych jest wymagana i tworzona automatycznie. Hostuje krytyczne zasobniki systemowe, takie jak CoreDNS
i metrics-server
. Więcej pul węzłów użytkownika można dodać do klastra usługi AKS w celu hostowania aplikacji.
Istnieją trzy sposoby wdrażania pul węzłów:
- Spanning zone (Strefy)
- Wyrównana strefa
- Regionalne
W przypadku puli węzłów systemowych liczba używanych stref jest konfigurowana podczas tworzenia klastra.
Spanning zone (Strefy)
Strefa obejmująca zestaw skalowania rozprzestrzenia węzły we wszystkich wybranych strefach, określając te strefy za pomocą parametru --zones
.
# Create an AKS Cluster, and create a zone spanning System Nodepool in all three AZs, one node in each AZ
az aks create --resource-group example-rg --name example-cluster --node-count 3 --zones 1, 2, 3
# Add one new zone spanning User Nodepool, two nodes in each
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-a --node-count 6 --zones 1, 2, 3
Usługa AKS równoważy liczbę węzłów między strefami automatycznie.
Jeśli wystąpi awaria strefowa, mogą mieć wpływ na węzły w strefie, której dotyczy problem, podczas gdy węzły w innych strefach dostępności pozostaną nienaruszone.
Wyrównana strefa
Każdy węzeł jest wyrównany (przypięty) do określonej strefy. Aby utworzyć trzy pule węzłów dla regionu z trzema Strefy dostępności:
# # Add three new zone aligned User Nodepools, two nodes in each
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-x --node-count 2 --zones 1
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-y --node-count 2 --zones 2
az aks nodepool add --resource-group example-rg --cluster-name example-cluster --name userpool-z --node-count 2 --zones 3
Ta konfiguracja może być używana, gdy potrzebujesz mniejszego opóźnienia między węzłami. Zapewnia również bardziej szczegółową kontrolę nad operacjami skalowania lub w przypadku korzystania z narzędzia do automatycznego skalowania klastra.
Uwaga
- Jeśli pojedyncze obciążenie jest wdrażane w pulach węzłów, zalecamy ustawienie
--balance-similar-node-groups
w celutrue
zachowania zrównoważonego rozkładu węzłów między strefami dla obciążeń podczas operacji skalowania w górę.
Regionalne (nieużywane Strefy dostępności)
Tryb regionalny jest używany, gdy przypisanie strefy nie jest ustawione w szablonie wdrożenia ("zones"=[] or "zones"=null
).
W tej konfiguracji pula węzłów tworzy wystąpienia regionalne (nieprzypinane do strefy) i niejawnie umieszcza wystąpienia w całym regionie. Nie ma żadnej gwarancji dla równowagi lub rozkładu w różnych strefach albo że wystąpienia lądują w tej samej strefie dostępności.
W rzadkich przypadkach całkowitej awarii strefowej może mieć wpływ na dowolne lub wszystkie wystąpienia w puli węzłów.
Aby zweryfikować lokalizacje węzłów, uruchom następujące polecenie:
kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
NAME REGION ZONE
aks-nodepool1-34917322-vmss000000 eastus eastus-1
aks-nodepool1-34917322-vmss000001 eastus eastus-2
aks-nodepool1-34917322-vmss000002 eastus eastus-3
Wdrożenia
Zasobniki
Platforma Kubernetes zna usługę Azure Strefy dostępności i może równoważyć zasobniki między węzłami w różnych strefach. W przypadku, gdy strefa stanie się niedostępna, platforma Kubernetes automatycznie przenosi zasobniki z węzłów, których to dotyczy.
Zgodnie z opisem w sekcji Dobrze znane etykiety, adnotacje i znaki, platforma Kubernetes używa topology.kubernetes.io/zone
etykiety do automatycznego dystrybuowania zasobników w kontrolerze replikacji lub usłudze w różnych dostępnych strefach.
Aby wyświetlić, na których węzłach zasobników są uruchomione, uruchom następujące polecenie:
kubectl describe pod | grep -e "^Name:" -e "^Node:"
Parametr "maxSkew" opisuje stopień, w jakim zasobniki mogą być nierównomiernie rozłożone. Przy założeniu, że trzy strefy i trzy repliki, ustawienie tej wartości na 1 gwarantuje, że każda strefa ma uruchomiony co najmniej jeden zasobnik:
kind: Pod
apiVersion: v1
metadata:
name: myapp
spec:
replicas: 3
topologySpreadConstraints:
- maxSkew: 1
topologyKey: "topology.kubernetes.io/zone"
whenUnsatisfiable: DoNotSchedule # or ScheduleAnyway
containers:
- name: pause
image: registry.k8s.io/pause:3.1
Magazyn i woluminy
Domyślnie platforma Kubernetes w wersji 1.29 lub nowszej korzysta z usługi Azure Dyski zarządzane przy użyciu magazynu strefowo nadmiarowego (ZRS) na potrzeby oświadczeń trwałych woluminów.
Te dyski są replikowane między strefami, aby zwiększyć odporność aplikacji i chronić dane przed awariami centrum danych.
Przykład oświadczenia trwałego woluminu używającego dysków SSD w warstwie Standardowa w magazynie ZRS:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi
#storageClassName: managed-csi-premium
resources:
requests:
storage: 5Gi
W przypadku wdrożeń wyrównanych do strefy można utworzyć nową klasę magazynu z parametrem ustawionym skuname
na LRS (magazyn lokalnie nadmiarowy).
Następnie możesz użyć nowej klasy magazynu w trwałym oświadczeniu woluminu (PVC).
Chociaż dyski LRS są tańsze, nie są strefowo nadmiarowe i dołączanie dysku do węzła w innej strefie nie jest obsługiwane.
Przykład klasy magazynu SSD LRS w warstwie Standardowa:
kind: StorageClass
metadata:
name: azuredisk-csi-standard-lrs
provisioner: disk.csi.azure.com
parameters:
skuname: StandardSSD_LRS
#skuname: PremiumV2_LRS
Moduły równoważenia obciążenia
Platforma Kubernetes domyślnie wdraża usługa Load Balancer w warstwie Standardowa Platformy Azure, która równoważy ruch przychodzący we wszystkich strefach w regionie. Jeśli węzeł stanie się niedostępny, moduł równoważenia obciążenia przekierowuje ruch do węzłów w dobrej kondycji.
Przykładowa usługa korzystająca z usługi Azure Load Balancer:
apiVersion: v1
kind: Service
metadata:
name: example
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- port: 80
targetPort: 8080
Ważne
30 września 2025 r. usługa Load Balancer w warstwie Podstawowa zostanie wycofana. Więcej informacji znajdziesz w oficjalnym ogłoszeniu. Jeśli obecnie używasz usługi Load Balancer w warstwie Podstawowa, pamiętaj o uaktualnieniu do usługa Load Balancer w warstwie Standardowa przed datą wycofania.
Ograniczenia
Podczas korzystania z Strefy dostępności obowiązują następujące ograniczenia:
- Zobacz Limity przydziału, ograniczenia rozmiaru maszyny wirtualnej i dostępność regionów w usłudze AKS.
- Nie można zmienić liczby użytych Strefy dostępności po utworzeniu puli węzłów.
- Większość regionów obsługuje Strefy dostępności. Listę można znaleźć tutaj.
Następne kroki
- Dowiedz się więcej o puli węzłów systemowych
- Dowiedz się więcej o pulach węzłów użytkownika
- Dowiedz się więcej o modułach równoważenia obciążenia
- Najlepsze rozwiązania dotyczące ciągłości działania i odzyskiwania po awarii w usłudze AKS
Azure Kubernetes Service