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

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.

  1. Erstellen Sie mithilfe des Befehls az group create eine Azure-Ressourcengruppe.

    az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
    
  2. 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.

  3. 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.

  1. 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
    
  2. Ü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:

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ühren az 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-sizeStandard_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 mit containerd 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 von az aks nodepool add hinzu.

    Hinweis

    Wenn Sie den benutzerdefinierten Header WindowsContainerRuntime=containerd nicht angeben, wird der Knotenpool containerd 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 Befehl az 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 Befehl az 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 auf Ephemeral festgelegt verwenden.

    Hinweis

    • Sie können kurzlebige Betriebssystemdatenträger während der Clustererstellung mithilfe des Flags --node-osdisk-type mit dem az 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
    

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).