Erstellen von Knotenpools für einen Cluster in Azure Kubernetes Service (AKS)
Im Azure Kubernetes Service (AKS) werden Knoten derselben Konfiguration zu Knotenpools zusammengefasst. Diese Knotenpools enthalten die zugrunde liegenden virtuellen Computer, die Ihre Anwendungen ausführen. Wenn Sie ein AKS-Cluster erstellen, definieren Sie die anfängliche Anzahl der Knoten und ihre Größe (SKU), wodurch ein Systemknotenpool erstellt wird.
Sie können Benutzerknotenpools erstellen, um Anwendungen mit unterschiedlichen Compute- oder Speicheranforderungen zu unterstützen. Systemknotenpools dienen dem primären Zweck, kritische Systempods wie CoreDNS und konnectivity
zu hosten. Benutzerknotenpools dienen dem primären Zweck, Ihre Anwendungspods zu hosten. Verwenden Sie mehr Benutzerknotenpools beispielsweise zum Bereitstellen von GPUs für rechenintensive Anwendungen oder für den Zugriff auf leistungsstarken SSD-Speicher. Wenn Sie jedoch nur einen Pool in Ihrem AKS-Cluster haben möchten, können Sie Anwendungspods auf Systemknotenpools planen.
Hinweis
Dieses Feature ermöglicht mehr Kontrolle über das Erstellen und Verwalten mehrerer Knotenpools und erfordert separate Befehle für Erstellungs-/Aktualisierungs-/Lösch-(CRUD)-Vorgänge. Für über az aks create
oder az aks update
ausgeführte Clustervorgänge wurde bisher die managedCluster-API verwendet, und diese Vorgänge stellten die einzigen Optionen zum Ändern der Steuerungsebene und eines einzelnen Knotenpools dar. Diese Funktion stellt einen separaten Vorgang für Agent-Pools über die agentPool-API zur Verfügung und erfordert die Verwendung des az aks nodepool
-Befehlssatzes zum Ausführen von Vorgängen für einen einzelnen Knotenpool.
In diesem Artikel erfahren Sie, wie Sie einen oder mehrere Knotenpools in einem AKS-Cluster erstellen.
Voraussetzungen
- Azure CLI-Version 2.2.0 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. - Überprüfen Sie die Speicheroptionen für Anwendungen in Azure Kubernetes Service, um Ihre Speicherkonfiguration zu planen.
Begrenzungen
Die folgenden Einschränkungen gelten für die Erstellung von AKS-Clustern, die mehrere Knotenpools unterstützen:
- Siehe Kontingente, Größeneinschränkungen für virtuelle Computer und regionale Verfügbarkeit in Azure Kubernetes Service (AKS).
- Sie können den Systemknotenpool löschen, wenn im AKS-Cluster ein anderer Systemknotenpool als Ersatz für diesen vorhanden ist. Andernfalls können Sie den Systemknotenpool nicht löschen.
- Systempools müssen mindestens einen Knoten enthalten, während Benutzerknotenpools keine oder mehrere Knoten enthalten können.
- Der AKS-Cluster Load Balancer muss die Standard-SKU verwenden, um mehrere Knotenpools zu verwenden. Das Feature wird mit Basic-SKU-Lastenausgleichsmodulen nicht unterstützt.
- Der AKS-Cluster muss Virtual Machine Scale Sets für die Knoten verwenden.
- Der Name eines Knotenpools darf nur Kleinbuchstaben und Ziffern enthalten und muss mit einem Kleinbuchstaben beginnen.
- Bei Linux-Knotenpools muss die Länge zwischen 1 und 12 Zeichen betragen.
- Bei Windows-Knotenpools muss die Länge zwischen 1 und 6 Zeichen betragen.
- Alle Knotenpools müssen sich im selben virtuellen Netzwerk befinden.
- Beim Erstellen mehrerer Knotenpools während der Clustererstellung muss die Kubernetes-Version für die Knotenpools der für die Steuerungsebene festgelegten Version entsprechen.
Erstellen eines AKS-Clusters
Wichtig
Wenn Sie für Ihren AKS-Cluster nur einen Systemknotenpool in einer Produktionsumgebung ausführen, sollten Sie für den Knotenpool mindestens drei Knoten verwenden. Wenn ein Knoten ausfällt, verlieren Sie Ressourcen auf der Steuerungsebene und die Redundanz wird gefährdet. Sie können dieses Risiko verringern, indem Sie mehr Knoten auf Steuerungsebene haben.
Erstellen Sie mithilfe des Befehls
az group create
eine Azure-Ressourcengruppe.az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
Erstellen Sie einen AKS-Cluster mit einem einzelnen Knotenpool mit dem Befehl
az aks create
.az aks create \ --resource-group $RESOURCE_GROUP_NAME \ --name $CLUSTER_NAME \ --vm-set-type VirtualMachineScaleSets \ --node-count 2 \ --location $LOCATION \ --load-balancer-sku standard \ --generate-ssh-keys
Die Erstellung des Clusters dauert einige Minuten.
Wenn der Cluster bereit ist, rufen Sie die Clusteranmeldeinformationen mithilfe des Befehls
az aks get-credentials
ab.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Hinzufügen eines Knotenpools
Der im vorherigen Schritt erstellte Cluster verfügt über einen einzelnen Knotenpool. In diesem Abschnitt fügen wir dem Cluster einen zweiten Knotenpool hinzu.
Erstellen Sie einen neuen Knotenpool mit dem Befehl
az aks nodepool add
. Das folgende Beispiel erstellt einen Knotenpool namens mynodepool, der drei Knoten ausführt:az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3
Überprüfen Sie den Status Ihrer Knotenpools mit dem Befehl
az aks node pool list
, und geben Sie Ihre Ressourcengruppe und den Clusternamen an.az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
Die folgende Beispielausgabe zeigt, dass mynodepool erfolgreich mit drei Knoten erstellt wurde. Wenn der AKS-Cluster im vorherigen Schritt erstellt wurde, dann wurde ein Standardknotenpool (nodepool1) mit 2 Knoten erstellt.
[ { ... "count": 3, ... "name": "mynodepool", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... }, { ... "count": 2, ... "name": "nodepool1", "orchestratorVersion": "1.15.7", ... "vmSize": "Standard_DS2_v2", ... } ]
ARM64-Knotenpools
Der ARM64-Prozessor bietet Computing mit geringer Leistung für Ihre Kubernetes-Workloads. Zum Erstellen eines ARM64-Knotenpools müssen Sie einen virtuellen Computer der Serie Dpsv5, Dplsv5 oder Epsv5 auswählen.
Begrenzungen
- ARM64-Knotenpools werden für Defender-fähige Cluster mit Kubernetes-Version unter 1.29.0 nicht unterstützt.
- Für FIPS aktivierte Knotenpools werden von ARM64-SKUs nicht unterstützt.
- Windows-Knotenpools werden von ARM64-SKUs nicht unterstützt.
Hinzufügen eines ARM64-Knotenpools
Fügen Sie ihrem vorhandenen Cluster mithilfe von
az aks nodepool add
einen ARM64-Knotenpool hinzu.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $ARM_NODE_POOL_NAME \ --node-count 3 \ --node-vm-size Standard_D2pds_v5
Azure Linux-Knotenpools
Der Azure Linux-Containerhost für AKS ist eine Open-Source-Linux-Verteilung, die als AKS-Containerhost verfügbar ist. Sie bietet hohe Zuverlässigkeit, Sicherheit und Konsistenz. Er enthält nur die für die Ausführung von Containerworkloads erforderliche Mindestanzahl von Paketen, sodass die Startzeiten und die Gesamtleistung verbessert werden.
Hinzufügen eines Azure Linux-Knotenpools
Fügen Sie mit dem Befehl
az aks nodepool add
und der Angabe von--os-sku AzureLinux
Ihrem vorhandenen Cluster einen Azure Linux-Knotenpool hinzu.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $AZ_LINUX_NODE_POOL_NAME \ --os-sku AzureLinux
Migrieren von Ubuntu-Knoten zu Azure Linux-Knoten
Sie können Ihre vorhandenen Ubuntu-Knoten mit einer der folgenden Methoden zu Azure Linux migrieren:
- Entfernen Sie vorhandene Knotenpools und fügen Sie neue Azure Linux-Knotenpoolshinzu.
- Direkte SKU-Migration des Betriebssystems.
Knotenpools mit eindeutigen Subnetzen
Eine Workload erfordert für die logische Isolation möglicherweise das Aufteilen der Clusterknoten in getrennte Pools. Separate Subnetze, die für jeden Knotenpool im Cluster dediziert sind, können diese Isolation unterstützen, die Anforderungen erfüllen kann, z. B. die Verwendung eines nicht zusammenhängenden virtuellen Netzwerkadressraums, der auf Knotenpools aufgeteilt werden kann.
Hinweis
Stellen Sie sicher, dass Sie mindestens Version 2.35.0
der Azure CLI verwenden.
Einschränkungen
- Alle Subnetze, die Knotenpools zugewiesen sind, müssen demselben virtuellen Netzwerk angehören.
- Systempods müssen Zugriff auf alle Knoten und Pods im Cluster haben, um eine kritische Funktionalität bereitzustellen, z. B. DNS-Auflösung und Tunneln von kubectl-Protokollen/exec/Port-Weiterleitungsproxy.
- Wenn Sie Ihr VNet nach dem Erstellen Ihres Clusters erweitern, müssen Sie den Cluster aktualisieren, bevor Sie ein Subnetz außerhalb des ursprünglichen CIDR-Blocks hinzufügen. Während AKS-Fehler im Agentpool hinzugefügt werden, unterstützt die
aks-preview
Azure CLI-Erweiterung (Version 0.5.66 und höher) jetzt das Ausführenaz aks update
Befehls mit nur den erforderlichen-g <resourceGroup> -n <clusterName>
Argumenten. Dieser Befehl führt einen Updatevorgang ohne Änderungen aus, sodass ein Cluster in einem fehlgeschlagenen Zustand wiederhergestellt werden kann. - In Clustern mit Kubernetes-Version unter 1.23.3 werden kube-proxy-SNATs-Datenverkehr von neuen Subnetzen gesendet, was dazu führen kann, dass die Azure-Netzwerkrichtlinie die Pakete abbricht.
- Windows-Knoten führen SNAT für Datenverkehr an die neuen Subnetze aus, bis ein Reimaging für den Knotenpool durchgeführt wurde.
- Interne Lastenausgleichsmodule sind standardmäßig auf eines der Knotenpoolsubnetze festgelegt.
Hinzufügen eines Knotenpools mit einem eindeutigen Subnetz
Fügen Sie Ihrem vorhandenen Cluster mithilfe des Befehls
az aks nodepool add
einen Knotenpool mit einem eindeutigen Subnetz hinzu, und geben Sie--vnet-subnet-id
an.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $NODE_POOL_NAME \ --node-count 3 \ --vnet-subnet-id $SUBNET_RESOURCE_ID
FIPS-fähige Knotenpools
Weitere Informationen zur Aktivierung des Federal Information Process Standard (FIPS) für Ihren AKS-Cluster finden Sie unter Aktivieren des Federal Information Process Standards (FIPS) für AKS-Knotenpools (Azure Kubernetes Service).
Windows Server-Knotenpools mit containerd
Ab Kubernetes Version 1.20 oder höher können Sie containerd
als Container-Laufzeitumgebung für Windows Server 2019-Knotenpools angeben. Ab Kubernetes 1.23 ist containerd
die einzige Container-Laufzeitumgebung für Windows.
Wichtig
Bei Verwendung von containerd
mit Windows Server 2019-Knotenpools gilt Folgendes:
- Sowohl die Steuerungsebene als auch die Windows Server 2019-Knotenpools müssen Kubernetes Version 1.20 oder höher verwenden.
- Wenn Sie einen Knotenpool zum Ausführen von Windows Server-Containern erstellen oder aktualisieren, ist
--node-vm-size
Standard_D2s_v3 der Standardwert für . Das entspricht der vor Kubernetes Version 1.20 empfohlenen Mindestgröße für Windows Server 2019-Knotenpools. Die empfohlene Mindestgröße für Windows Server 2019-Knotenpools mitcontainerd
ist Standard_D4s_v3. Überprüfen Sie beim Festlegen des--node-vm-size
-Parameters die Liste der eingeschränkten VM-Größen. - Es wird empfohlen, Taints oder Bezeichnungen mit Ihren Windows Server 2019-Knotenpools zu verwenden, die mit
containerd
ausgeführt werden. Außerdem sollten Sie mit Ihren Bereitstellungen Toleranzen oder Knotenselektoren verwenden, um eine ordnungsgemäße Planung Ihrer Workloads zu gewährleisten.
Hinzufügen eines Windows Server-Knotenpools mit containerd
Fügen Sie ihrem vorhandenen Cluster mit
containerd
einen Windows Server-Knotenpool mithilfe vonaz aks nodepool add
hinzu.Hinweis
Wenn Sie den benutzerdefinierten Header
WindowsContainerRuntime=containerd
nicht angeben, wird der Knotenpoolcontainerd
dennoch standardmäßig als Runtime für den Container verwenden.az aks nodepool add \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --os-type Windows \ --name $CONTAINER_D_NODE_POOL_NAME \ --node-vm-size Standard_D4s_v3 \ --kubernetes-version 1.20.5 \ --aks-custom-headers WindowsContainerRuntime=containerd \ --node-count 1
Upgrade eines bestimmten vorhandenen Windows Server-Knotenpools auf containerd
Aktualisieren Sie einen bestimmten Knotenpool von Docker auf
containerd
, indem Sie den Befehlaz aks nodepool upgrade
verwenden.az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --name $CONTAINER_D_NODE_POOL_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Upgrade aller vorhandenen Windows Server-Knotenpools auf containerd
Aktualisieren Sie alle Knotenpools von Docker auf
containerd
, indem Sie den Befehlaz aks nodepool upgrade
verwenden.az aks nodepool upgrade \ --resource-group $RESOURCE_GROUP_NAME \ --cluster-name $CLUSTER_NAME \ --kubernetes-version 1.20.7 \ --aks-custom-headers WindowsContainerRuntime=containerd
Knotenpools mit kurzlebigen Betriebssystemdatenträgern
Fügen Sie einen Knotenpool, der kurzlebige Betriebssystemdatenträger verwendet, zu einem vorhandenen Cluster hinzu, indem Sie den
az aks nodepool add
-Befehl mit dem Flag--node-osdisk-type
aufEphemeral
festgelegt verwenden.Hinweis
- Sie können kurzlebige Betriebssystemdatenträger während der Clustererstellung mithilfe des Flags
--node-osdisk-type
mit demaz aks create
-Befehl angeben. - Wenn Sie Knotenpools mit netzwerkbasierten Betriebssystemdatenträgern erstellen möchten, geben Sie
--node-osdisk-type Managed
an.
az aks nodepool add --name $EPHEMERAL_NODE_POOL_NAME --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME -s Standard_DS3_v2 --node-osdisk-type Ephemeral
- Sie können kurzlebige Betriebssystemdatenträger während der Clustererstellung mithilfe des Flags
Wichtig
Mit einem kurzlebigen Betriebssystem können Sie VMs und Instanzimages bis zur Größe des VM-Caches bereitstellen. Die Betriebssystemdatenträgerkonfiguration des Standardknotens in AKS verwendet 128 GB, was bedeutet, dass Sie eine VM-Größe benötigen, deren Cache größer als 128 GB ist. Die Cachegröße von „Standard_DS2_v2“ beträgt 86 GB und ist somit nicht ausreichend. Die VM-SKU Standard_DS3_v2 weist eine Cachegröße von 172 GB auf und ist damit groß genug. Sie können auch die Standardgröße des Betriebssystemdatenträgers mithilfe von --node-osdisk-size
verringern, aber beachten Sie, dass die Mindestgröße für AKS-Images 30 GB beträgt.
Löschen eines Knotenpools
Wenn Sie einen Knotenpool nicht mehr benötigen, können Sie ihn löschen und die zugrunde liegenden VM-Knoten entfernen.
Achtung
Wenn Sie einen Knotenpool löschen, führt AKS kein Absperren und Ausgleichen durch, und es gibt keine Wiederherstellungsoptionen für Datenverluste, die beim Löschen eines Knotenpools auftreten können. Wenn Pods nicht in anderen Knotenpools geplant werden können, sind diese Anwendungen dann nicht mehr verfügbar. Stellen Sie sicher, dass Sie einen Knotenpool nicht löschen, wenn aktive Anwendungen keine Datensicherungen aufweisen oder nicht in anderen Knotenpools in Ihrem Cluster ausgeführt werden können. Um die Unterbrechung der Neuplanung von Pods zu minimieren, die derzeit in dem Knotenpool ausgeführt werden, den Sie löschen möchten, führen Sie vor dem Löschen eine Absperrung und einen Ausgleich auf allen Knoten im Knotenpool durch.
Löschen Sie einen Knotenpool mit dem Befehl
az aks nodepool delete
, und geben Sie den Namen des Knotenpools an.az aks nodepool delete --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --no-wait
Das Löschen der Knoten und des Knotenpools dauert einige Minuten.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie mehrere Knotenpools in einem AKS-Cluster erstellen. Informationen zum Verwalten mehrerer Knotenpools finden Sie unter Verwalten mehrerer Knotenpools für einen Cluster in Azure Kubernetes Service (AKS).
Azure Kubernetes Service