Automatische Zonenplatzierung in Azure Kubernetes Service (Vorschau)

Die automatische Zonenplatzierung in Azure Kubernetes Service (AKS) wählt dynamisch die besten Verfügbarkeitszonen für einen Knotenpool aus. Sie müssen die Zonen nicht manuell für jede Region und VM-SKU-Kombination angeben. Wenn Sie einen Knotenpool mit --zones auto erstellen oder aktualisieren, platziert AKS virtuelle Maschinen (VMs) in Verfügbarkeitszonen, die über Kapazität für die angeforderte SKU in der Zielregion verfügen, und wendet einen maximalen Instanzanteil von 50 % pro Zone an.

In diesem Artikel erfahren Sie, wie Sie AKS-Knotenpools erstellen oder aktualisieren, die die automatische Zonenplatzierung verwenden.

Funktionsweise der automatischen Zonenplatzierung

Wenn Sie --zones auto angeben (oder availabilityZones: ["auto"] im Agentpoolprofil), verwendet AKS die Azure Compute-Richtlinie für die automatische Zonenzuweisung, um Zonen auszuwählen und Knoten zu verteilen. Sie müssen keine Zonennummern angeben oder unterschiedliche Zonenkonfigurationen für jede Region und VM-SKU verwalten.

Die automatische Zonenplatzierung funktioniert wie folgt:

  1. AKS bewertet, welche Verfügbarkeitszonen in der Zielregion die angeforderte VM-SKU unterstützen können.
  2. AKS wählt zunächst bis zu drei verfügbare Zonen aus und platziert Knoten gemäß der Richtlinie für die automatische Zonenplatzierung. Es kann keine einzelne Zone mehr als 50% des Knotenpools enthalten.
  3. Bei späteren Skalierungsvorgängen überprüft AKS die Zonenverfügbarkeit erneut. Wenn Azure der Region eine Zone hinzufügt oder die VM-SKU in einer anderen Zone verfügbar macht, platziert AKS möglicherweise neue Knoten in dieser Zone, wenn die Platzierungsrichtlinie und verfügbare Kapazität dies zulassen. Sie müssen die Knotenpoolkonfiguration nicht aktualisieren.

Important

Der Grenzwert von 50% ist eine maximale Konzentration pro Zone, nicht garantiert, dass Knoten immer gleichmäßig verteilt werden. Die tatsächliche Verteilung hängt von der Knotenanzahl, den Zonen ab, die die ausgewählte VM-SKU unterstützen, und der kapazität, die verfügbar ist, wenn Knoten bereitgestellt werden. Ein Erstellungs- oder Skalierungsvorgang kann weiterhin fehlschlagen, wenn Azure die angeforderten Knoten nicht zuordnen kann, während der Grenzwert pro Zone berücksichtigt wird.

Bei diesem Ansatz werden häufige Schmerzpunkte behandelt, bei denen Zonen manuell angegeben werden:

  • Regionsagnostische Bereitstellungen: Verwenden Sie konsistente Konfigurationen in allen Regionen, ohne sich Gedanken über Zonenverfügbarkeitsunterschiede machen zu müssen.
  • Verbesserte Resilienz: Automatisches Erreichen von Multizone-Redundanz für eine bessere Anwendungsverfügbarkeit.
  • Automatische Zonenerweiterung: Nahtlose Nutzung neuer Verfügbarkeitszonen beim Erweitern von Regionen (z. B. von drei bis vier Zonen).
  • Verringerte Bereitstellungsfehler: Reduzieren Sie Erstellungs- und Skalierungszuordnungsfehler, die durch Kapazitätseinschränkungen in einer bestimmten Zone verursacht werden, basierend auf Ihrer Workloadtoleranz des zonalen Ausgleichs.

Einschränkungen und Überlegungen

  • Automatische Zonenplatzierung unterstützt nur Regionen mit Unterstützung der Verfügbarkeitszone. Weitere Informationen finden Sie in der Liste der Azure-Regionen.
  • Die automatische Zonenplatzierung unterstützt das Erstellen und Aktualisieren von Virtual Machine Scale Sets-basierten und Virtual Machines-basierten Knotenpools.
  • Die Obergrenze pro Zone beträgt 50% von Knoten. Ein Erstellungs- oder Skalierungsvorgang kann weiterhin fehlschlagen, wenn Azure die angeforderten Knoten nicht zuordnen kann, während der Grenzwert pro Zone berücksichtigt wird.
  • Die automatische Zonenplatzierung ist für Zonenübergreifende Workloads vorgesehen. Geben Sie bei zonenbezogenen Workloads (bei denen jeder Knotenpool fest einer einzelnen Zone zugeordnet ist) die Zone weiterhin explizit an, indem Sie --zones 1, --zones 2 usw. verwenden.

Voraussetzungen

Important

AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:

Installieren Sie die aks-preview-Erweiterung für die Befehlszeilenschnittstelle

Installieren Sie die Aks-Preview CLI-Erweiterung mithilfe des az extension add Befehls.

az extension add --name aks-preview

Aktualisieren Sie die Erweiterung, um sicherzustellen, dass die neueste Version mit dem az extension update Befehl installiert ist.

az extension update --name aks-preview

Registriere die VmssAutomaticZonePlacement-Feature-Flag

Registrieren Sie das Feature-Flag mithilfe des az feature register Befehls:

az feature register \
  --namespace Microsoft.Compute \
  --name VmssAutomaticZonePlacement

Überprüfen Sie den Registrierungsstatus mithilfe des az feature show Befehls:

az feature show \
  --namespace Microsoft.Compute \
  --name VmssAutomaticZonePlacement \
  --query properties.state \
  --output tsv

Warten Sie, bis der Befehl zurückgegeben wird Registered , bevor Sie fortfahren.

Erstellen eines AKS-Clusters mit automatischer Zonenplatzierung (Vorschau)

Erstellen Sie einen neuen AKS-Cluster mit einem auf Virtual Machine Scale Sets oder Virtual Machines basierenden Systemknotenpool, bei dem die automatische Zonenplatzierung verwendet wird, indem Sie den az aks createBefehl mit --zones auto verwenden:

az aks create \
  --resource-group example-rg \
  --name example-cluster \
  --node-vm-size Standard_D8s_v5 \
  --node-count 10 \
  --zones auto

AKS wählt die Zonen aus, die in der Zielregion Kapazität für Standard_D8s_v5 haben, und verteilt die 10 Knoten auf diese Zonen, sodass keine einzelne Zone mehr als 50 % der Knoten beherbergt.

Hinzufügen eines Knotenpools mit automatischer Zonenplatzierung (Vorschau)

Fügen Sie einem vorhandenen Cluster einen neuen Virtual Machine Scale Sets-basierten oder Virtual Machines-basierten Knotenpool hinzu, indem Sie den Befehl az aks nodepool add mit --zones auto verwenden:

az aks nodepool add \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name userpoolauto \
  --node-vm-size Standard_D8s_v5 \
  --node-count 6 \
  --zones auto

Aktualisieren eines vorhandenen Knotenpools zur Verwendung der automatischen Zonenplatzierung (Vorschau)

Aktualisieren Sie einen bestehenden, auf Virtual Machine Scale Sets oder Virtual Machines basierenden Knotenpool, sodass er die automatische Zonenplatzierung verwendet, indem Sie den Befehl az aks nodepool update mit --zones auto verwenden:

az aks nodepool update \
  --resource-group example-rg \
  --cluster-name example-cluster \
  --name nodepool1 \
  --zones auto

AKS aktualisiert den vorhandenen Knotenpool über einen rollierenden Vorgang:

  1. AKS fügt Überspannungsknoten hinzu, die die automatische Zonenplatzierung verwenden.
  2. AKS sperrt die vorhandenen Knoten und entleert sie.
  3. AKS entfernt die vorhandenen Knoten, nachdem ihre Workloads auf die Surge-Knoten verschoben wurden.

Der Vorgang berücksichtigt die folgenden Upgradeeinstellungen, die Sie im Knotenpool konfigurieren:

  • Max. Anstieg (--max-surge): Steuert, wie viele zusätzliche Knoten AKS während der Aktualisierung hinzugefügt werden. Ein höherer Wert schließt das Update schneller ab, erfordert jedoch mehr Computekontingent und Subnetz-IP-Kapazität.
  • Zeitlimit für das Leeren von Knoten (--drain-timeout): Steuert, wie lange AKS auf die Entfernung von Pods von einem Knoten wartet, bevor der Leerungsvorgang fehlschlägt.
  • Zeit für die Aufnahme von Knoten (--node-soak-duration): Steuert, wie lange AKS wartet, nachdem ein neuer Knoten bereit ist, bevor mit dem nächsten Batch fortgefahren wird.

Bevor Sie das Update starten, stellen Sie sicher, dass Sie über ausreichend Compute-Kontingent und genügend Subnetz-IP-Kapazität für die zusätzlichen Knoten verfügen und dass Ihre Pod Disruption Budgets das Leeren der Knoten zulassen.

Platzierung der Zone überprüfen

Überprüfen Sie nach dem Erstellen oder Aktualisieren des Cluster- oder Knotenpools die Zonen, die AKS mithilfe des az aks show Befehls ausgewählt haben.

az aks show \
 --name example-cluster \
 --resource-group example-rg \
 --query agentPoolProfiles[].availabilityZones \
 --output tsv

Sie können auch kubectl verwenden, um die Knotenverteilung auf die Zonen zu überprüfen.

kubectl get nodes -o custom-columns='NAME:metadata.name, REGION:metadata.labels.topology\.kubernetes\.io/region, ZONE:metadata.labels.topology\.kubernetes\.io/zone'

Beispielausgabe:

NAME                                REGION   ZONE
aks-nodepool1-12345678-vmss000000   eastus   eastus-1
aks-nodepool1-12345678-vmss000001   eastus   eastus-2
aks-nodepool1-12345678-vmss000002   eastus   eastus-3
...