Beschikbaarheidszones in Azure Kubernetes Service (AKS)
Beschikbaarheidszones helpen uw toepassingen en gegevens te beschermen tegen datacenterfouten. Zones zijn unieke fysieke locaties binnen een Azure-regio. Elke zone bevat een of meer datacenters die zijn uitgerust met onafhankelijke voeding, koeling en netwerken.
Het gebruik van AKS met beschikbaarheidszones distribueert resources fysiek over verschillende beschikbaarheidszones binnen één regio, waardoor de betrouwbaarheid wordt verbeterd. Voor het implementeren van knooppunten in meerdere zones worden geen extra kosten in rekening gebracht.
In dit artikel leest u hoe u AKS-resources configureert voor het gebruik van Beschikbaarheidszones.
AKS-resources
In dit diagram ziet u de Azure-resources die worden gemaakt bij het maken van een AKS-cluster:
AKS-besturingsvlak
Microsoft host het AKS-besturingsvlak, de Kubernetes-API-server en -services, zoals scheduler
en etcd
als een beheerde service. Microsoft repliceert het besturingsvlak in meerdere zones.
Andere resources van uw cluster implementeren in een beheerde resourcegroep in uw Azure-abonnement. Deze resourcegroep wordt standaard voorafgegaan door MC_, voor beheerd cluster en bevat de volgende resources:
Knooppuntpools
Knooppuntgroepen worden gemaakt als een virtuele-machineschaalset in uw Azure-abonnement.
Wanneer u een AKS-cluster maakt, is één systeemknooppuntgroep vereist en automatisch gemaakt. Het host kritieke systeempods zoals CoreDNS
en metrics-server
. Er kunnen meer gebruikersknooppuntgroepen worden toegevoegd aan uw AKS-cluster om uw toepassingen te hosten.
Er zijn drie manieren waarop knooppuntgroepen kunnen worden geïmplementeerd:
- Zone-spanning
- Zone uitgelijnd
- Regionaal
Voor de systeemknooppuntgroep wordt het aantal gebruikte zones geconfigureerd wanneer het cluster wordt gemaakt.
Zone-spanning
Een zone die de schaalset beslaat, verspreidt knooppunten over alle geselecteerde zones door deze zones met de --zones
parameter op te geven.
# 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
AKS balanceert automatisch het aantal knooppunten tussen zones.
Als er een zonegebonden storing optreedt, kunnen knooppunten binnen de getroffen zone worden beïnvloed, terwijl knooppunten in andere beschikbaarheidszones niet worden beïnvloed.
Zone uitgelijnd
Elk knooppunt wordt uitgelijnd (vastgemaakt) aan een specifieke zone. Drie knooppuntgroepen maken voor een regio met drie Beschikbaarheidszones:
# # 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
Deze configuratie kan worden gebruikt wanneer u een lagere latentie tussen knooppunten nodig hebt. Het biedt ook gedetailleerdere controle over schaalbewerkingen of wanneer u de automatische schaalaanpassing van clusters gebruikt.
Notitie
- Als één workload wordt geïmplementeerd in knooppuntgroepen, raden we u aan
--balance-similar-node-groups
om een evenwichtige verdeling van knooppunten tussen zones voor uw workloads tetrue
behouden tijdens het opschalen van bewerkingen.
Regionaal (niet met Beschikbaarheidszones)
De regionale modus wordt gebruikt wanneer de zonetoewijzing niet is ingesteld in de implementatiesjabloon ("zones"=[] or "zones"=null
).
In deze configuratie maakt de knooppuntgroep regionale (niet-zone vastgemaakte) exemplaren en plaatst impliciet exemplaren in de hele regio. Er is geen garantie voor saldo of verdeling tussen zones, of die exemplaren landen in dezelfde beschikbaarheidszone.
In het zeldzame geval van een volledige zonestoring kunnen alle of alle exemplaren in de knooppuntgroep worden beïnvloed.
Voer de volgende opdracht uit om knooppuntlocaties te valideren:
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
Installaties
Pods
Kubernetes is op de hoogte van Azure Beschikbaarheidszones en kan pods verdelen over knooppunten in verschillende zones. In het geval dat een zone niet meer beschikbaar is, verplaatst Kubernetes pods automatisch van betrokken knooppunten.
Zoals beschreven in bekende labels, aantekeningen en Taints, gebruikt Kubernetes het topology.kubernetes.io/zone
label om pods automatisch te distribueren in een replicatiecontroller of service in de verschillende beschikbare zones.
Voer de volgende opdracht uit om te bekijken op welke pods-knooppunten worden uitgevoerd:
kubectl describe pod | grep -e "^Name:" -e "^Node:"
De parameter maxSkew beschrijft de mate waarin Pods ongelijk verdeeld kunnen zijn. Ervan uitgaande dat er drie zones en drie replica's zijn, zorgt u ervoor dat elke zone ten minste één pod heeft die wordt uitgevoerd:
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
Opslag en volumes
Kubernetes-versies 1.29 en hoger maken standaard gebruik van Azure Managed Disks met zone-redundant-storage (ZRS) voor permanente volumeclaims.
Deze schijven worden tussen zones gerepliceerd om de tolerantie van uw toepassingen te verbeteren en uw gegevens te beschermen tegen datacenterfouten.
Een voorbeeld van een permanente volumeclaim die gebruikmaakt van Standard SSD in ZRS:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azure-managed-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi
#storageClassName: managed-csi-premium
resources:
requests:
storage: 5Gi
Voor zone-uitgelijnde implementaties kunt u een nieuwe opslagklasse maken met de skuname
parameter ingesteld op LRS (lokaal redundante opslag).
Vervolgens kunt u de nieuwe opslagklasse gebruiken in uw Persistent Volume Claim (PVC).
Hoewel LRS-schijven goedkoper zijn, zijn ze niet zone-redundant en wordt het koppelen van een schijf aan een knooppunt in een andere zone niet ondersteund.
Een voorbeeld van een LRS Standard SSD-opslagklasse:
kind: StorageClass
metadata:
name: azuredisk-csi-standard-lrs
provisioner: disk.csi.azure.com
parameters:
skuname: StandardSSD_LRS
#skuname: PremiumV2_LRS
Load balancers
Kubernetes implementeert standaard een Azure Standard Load Balancer, waarmee inkomend verkeer wordt verdeeld over alle zones in een regio. Als een knooppunt niet beschikbaar is, wordt verkeer door de load balancer omgeleid naar knooppunten die in orde zijn.
Een voorbeeldservice die gebruikmaakt van de Azure Load Balancer:
apiVersion: v1
kind: Service
metadata:
name: example
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- port: 80
targetPort: 8080
Belangrijk
Op 30 september 2025 wordt Basic Load Balancer buiten gebruik gesteld. Zie de officiële aankondiging voor meer informatie. Als u momenteel Basic Load Balancer gebruikt, moet u vóór de buitengebruikstelling een upgrade uitvoeren naar Standard Load Balancer.
Beperkingen
De volgende beperkingen zijn van toepassing bij het gebruik van Beschikbaarheidszones:
- Zie Quota, beperkingen voor grootte van virtuele machines en beschikbaarheid van regio's in AKS.
- Het aantal Beschikbaarheidszones kan niet worden gewijzigd nadat de knooppuntgroep is gemaakt.
- De meeste regio's ondersteunen Beschikbaarheidszones. Hier vindt u een lijst.
Volgende stappen
- Meer informatie over systeemknooppuntgroep
- Meer informatie over gebruikersknooppuntgroepen
- Meer informatie over Load Balancers
- Best practices voor bedrijfscontinuïteit en herstel na noodgevallen in AKS
Azure Kubernetes Service