Erstellen eines Azure Kubernetes Service-Clusters (AKS), der Verfügbarkeitszonen verwendet
Dieser Artikel zeigt Ihnen, wie Sie einen AKS-Cluster erstellen und die Knotenkomponenten auf Verfügbarkeitszonen verteilen.
Voraussetzungen
- Azure CLI-Version 2.0.76 oder höher muss installiert und konfiguriert sein. Führen Sie
az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI. - Lesen Sie die Übersicht über Verfügbarkeitszonen in AKS, um die Vorteile und Einschränkungen der Verwendung von Verfügbarkeitszonen in AKS zu verstehen.
Azure Resource Manager-Vorlagen und -Verfügbarkeitszonen
Beachten Sie die folgenden Details beim Erstellen eines AKS-Clusters mit Verfügbarkeitszonen mithilfe einer Azure Resource Manager-Vorlage:
- Wenn Sie explizit einen NULL-Wert in einer Vorlage definieren, z. B.
"availabilityZones": null
, behandelt die Vorlage die Eigenschaft so, als ob sie nicht vorhanden wäre. Dies bedeutet, dass Ihr Cluster nicht in einer Verfügbarkeitszone bereitgestellt wird. - Wenn Sie die Eigenschaft
"availabilityZones":
nicht in die Vorlage einschließen, wird Ihr Cluster nicht in einer Verfügbarkeitszone bereitgestellt. - Sie können die Einstellungen für Verfügbarkeitszonen in einem vorhandenen Cluster nicht aktualisieren, da das Verhalten anderes ist, wenn Sie einen AKS-Cluster mit Azure Resource Manager-Vorlagen aktualisieren. Wenn Sie in Ihrer Vorlage einen NULL-Wert für Verfügbarkeitszonen explizit festlegen und Ihren Cluster aktualisieren, wird Ihr Cluster für Verfügbarkeitszonen nicht aktualisiert. Wenn Sie jedoch die Eigenschaft für Verfügbarkeitszonen mit Syntax wie
"availabilityZones": []
weglassen, versucht die Bereitstellung, Verfügbarkeitszonen in Ihrem vorhandenen AKS-Cluster zu deaktivieren, und"availabilityZones": []
.
Erstellen eines AKS-Clusters über Verfügbarkeitszonen hinweg
Wenn Sie einen Cluster mit dem Befehl az aks create
erstellen, gibt der Parameter --zones
die Verfügbarkeitszonen an, in denen Agentknoten bereitgestellt werden. Die Verfügbarkeitszonen, in denen die Komponenten der verwalteten Steuerungsebene bereitgestellt werden, werden nicht durch diesen Parameter gesteuert. Sie werden während der Clusterbereitstellung automatisch auf alle Verfügbarkeitszonen (sofern vorhanden) in der Region verteilt.
Die folgenden Beispielbefehle zeigen, wie Sie eine Ressourcengruppe und einen AKS-Cluster mit insgesamt drei Knoten erstellen. Ein Agent in Zone 1, einer in Zone 2 und ein weiterer in Zone 3.
Erstellen Sie mit dem Befehl
az group create
eine Ressourcengruppe.az group create --name $RESOURCE_GROUP --location $LOCATION
Erstellen Sie einen AKS-Cluster mit dem Befehl „
az aks create
“ und dem--zones
-Parameter.az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --generate-ssh-keys \ --vm-set-type VirtualMachineScaleSets \ --load-balancer-sku standard \ --node-count 3 \ --zones 1 2 3
Die Erstellung des AKS-Clusters dauert einige Minuten.
Bei der Entscheidung, welcher Zone ein neuer Knoten angehören soll, verwendet ein angegebener AKS-Knotenpool ein bestmögliches Zonengleichgewicht, das von den zugrunde liegenden Azure VM-Skalierungsgruppen geboten wird. Der AKS-Knotenpool befindet sich „im Gleichgewicht“, wenn die gleiche Anzahl von VMs oder +- 1 VM in allen anderen Zonen der Skalierungsgruppe liegt.
Überprüfen der Verteilung der Knoten auf die Zonen
Wenn der Cluster bereit ist, listen Sie die Verfügbarkeitszone auf, in der sich die Agent-Knoten in der Skalierungsgruppe befinden.
Laden Sie die AKS-Cluster-Anmeldeinformationen mit dem Befehl
az aks get-credentials
:az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Listen Sie die Konten im Cluster mit dem Befehl
kubectl describe
auf, und filtern Sie nach dem Werttopology.kubernetes.io/zone
.kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
Das folgende Beispiel zeigt die drei Knoten, die auf die angegebene Region und die Verfügbarkeitszonen verteilt sind, wie z. B. eastus2-1 für die erste Verfügbarkeitszone und eastus2-2 für die zweite Verfügbarkeitszone:
Name: aks-nodepool1-28993262-vmss000000 topology.kubernetes.io/zone=eastus2-1 Name: aks-nodepool1-28993262-vmss000001 topology.kubernetes.io/zone=eastus2-2 Name: aks-nodepool1-28993262-vmss000002 topology.kubernetes.io/zone=eastus2-3
Wenn Sie einem Agent-Pool weitere Knoten hinzufügen, verteilt die Azure-Plattform die zugrunde liegenden VMs automatisch auf die angegebenen Verfügbarkeitszonen.
In den Kubernetes-Versionen 1.17.0 und höher verwendet AKS die Bezeichnung topology.kubernetes.io/zone
und die veraltete Bezeichnung failure-domain.beta.kubernetes.io/zone
. Sie können dasselbe Ergebnis erhalten, indem Sie den Befehl kubectl describe nodes
im vorherigen Beispiel mit dem folgenden Befehl ausführen:
kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'
Das folgende Beispiel ähnelt der Ausgabe mit ausführlicheren Details:
NAME REGION ZONE
aks-nodepool1-34917322-vmss000000 eastus eastus-1
aks-nodepool1-34917322-vmss000001 eastus eastus-2
aks-nodepool1-34917322-vmss000002 eastus eastus-3
Überprüfen der Verteilung der Pods auf die Zonen
Wie unter Well-Known Labels, Annotations and Taints (Bekannte Bezeichnungen, Anmerkungen und Taints) dokumentiert, wird in Kubernetes die Bezeichnung topology.kubernetes.io/zone
zum automatischen Verteilen von Pods in einem Replikationscontroller oder Replikationsdienst in den verschiedenen verfügbaren Zonen verwendet. In diesem Beispiel testen Sie die Beschriftung und skalieren Ihren Cluster von 3 auf 5 Knoten, um die korrekte Verteilung des Pods zu überprüfen.
Skalieren Sie Ihren AKS-Cluster von 3 auf 5 Knoten, indem Sie den Befehl
az aks scale
verwenden, wobei die--node-count
auf5
festgelegt ist.az aks scale \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --node-count 5
Überprüfen Sie nach Abschluss des Skalierungsvorgangs die Podverteilung über die Zonen, indem Sie den folgenden Befehl
kubectl describe
verwenden:kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
Das folgende Beispiel zeigt die fünf Knoten, die auf die angegebene Region und die Verfügbarkeitszonen verteilt sind, wie z. B. eastus2-1 für die erste Verfügbarkeitszone und eastus2-2 für die zweite Verfügbarkeitszone:
Name: aks-nodepool1-28993262-vmss000000 topology.kubernetes.io/zone=eastus2-1 Name: aks-nodepool1-28993262-vmss000001 topology.kubernetes.io/zone=eastus2-2 Name: aks-nodepool1-28993262-vmss000002 topology.kubernetes.io/zone=eastus2-3 Name: aks-nodepool1-28993262-vmss000003 topology.kubernetes.io/zone=eastus2-1 Name: aks-nodepool1-28993262-vmss000004 topology.kubernetes.io/zone=eastus2-2
Stellen Sie eine NGINX-Anwendung mit drei Replikaten mithilfe der folgenden Befehle
kubectl create deployment
undkubectl scale
bereit:kubectl create deployment nginx --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine kubectl scale deployment nginx --replicas=3
Überprüfen die Podverteilung über die Zonen, indem Sie den folgenden Befehl
kubectl describe
verwenden:kubectl describe pod | grep -e "^Name:" -e "^Node:"
Das folgende Beispiel zeigt die drei Pods, die auf die angegebene Region und die Verfügbarkeitszonen verteilt sind, wie z. B. eastus2-1 für die erste Verfügbarkeitszone und eastus2-2 für die zweite Verfügbarkeitszone:
Name: nginx-6db489d4b7-ktdwg Node: aks-nodepool1-28993262-vmss000000/10.240.0.4 Name: nginx-6db489d4b7-v7zvj Node: aks-nodepool1-28993262-vmss000002/10.240.0.6 Name: nginx-6db489d4b7-xz6wj Node: aks-nodepool1-28993262-vmss000004/10.240.0.8
Wie Sie in dieser Ausgabe sehen können, wird der erste Pod auf dem Knoten 0 ausgeführt, der sich in der Verfügbarkeitszone
eastus2-1
befindet. Der zweite Pod wird auf dem Knoten 2 ausgeführt, dereastus2-3
entspricht, und der dritte Pod auf dem Knoten 4, dereastus2-2
entspricht. Ohne zusätzliche Konfiguration verteilt Kubernetes die Pods ordnungsgemäß auf alle drei Verfügbarkeitszonen.
Nächste Schritte
Dieser Artikel beschreibt, wie Sie einen AKS-Cluster mit Verfügbarkeitszonen erstellen. Weitere Informationen zu hochverfügbaren Clustern finden Sie unter Best Practices für Geschäftskontinuität und Notfallwiederherstellung in Azure Kubernetes Service (AKS).
Azure Kubernetes Service