Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Azure Kubernetes Service (AKS) werden Knoten derselben Konfiguration in node pools gruppiert. Knotenpools enthalten die zugrunde liegenden virtuellen Computer (VM), die Ihre Anwendungen ausführen. Systemknotenpools und Benutzerknotenpools sind zwei verschiedene Knotenpoolmodi für AKS-Cluster. In diesem Artikel wird erläutert, wie Sie Systemknotenpools in AKS verwalten. Informationen zur Verwendung mehrerer Knotenpools finden Sie unter [Erstellen von Knotenpools][create-node-pools].
-
Systemknotenpools: Der hauptzweck ist das Hosten kritischer System-Pods wie
CoreDNSundmetrics-server. Systemknotenpools sollten nicht zum Ausführen Ihrer Anwendung verwendet werden. Systemknotenpools verwenden Ubuntu Linux oder Azure Linux. - Benutzerknotenpools: Der Hauptzweck besteht darin, Ihre Anwendungs pods zu hosten und Anwendungen vom Systemknotenpool zu isolieren. Diese Isolation verhindert, dass eine Anwendung instabilität mit dem Systemknotenpool Ihres Clusters verursacht. Benutzerknotenpools können Ubuntu Linux, Azure Linux oder Windows verwenden.
Ein Produktions-AKS-Cluster mit einem einzelnen Systemknotenpool muss mindestens zwei Knoten enthalten. Die Empfehlung für einen Produktions-AKS-Cluster mit einem einzelnen Systemknotenpool besteht darin, mindestens drei Knoten für eine verbesserte Fehlertoleranz und Verfügbarkeitszonen zu haben. Beispielsweise ist die Standardknotenanzahl des Azks create command drei und erstellt einen neuen Cluster mit einem einzelnen Linux-Systemknotenpool und drei Linux-Knoten.
Es ist möglich, aber nicht zu empfehlen, Anwendungspods in einem System-Node-Pool einzuplanen, wenn Sie in Ihrem AKS-Cluster nur über einen Node-Pool verfügen. Eine bessere Lösung besteht darin, einen Benutzerknotenpool für Ihre Anwendung zu erstellen.
Bevor Sie anfangen
Sie benötigen die Azure CLI Version 2.3.1 oder höher installiert und konfiguriert. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.
Einschränkungen
Die folgenden Einschränkungen gelten für die Erstellung und Verwaltung von AKS-Clustern, die Systemknotenpools unterstützen.
- Siehe Kontingente, VM-Größenbeschränkungen und Regionsverfügbarkeit in AKS.
- Zum Festlegen des Modus für einen Knotenpool muss eine API der Version 2020-03-01 oder höher verwendet werden. Cluster, die in älteren API-Versionen als 2020-03-01 erstellt werden, enthalten nur Benutzerknotenpools, können aber durch Ausführen der Schritte zum Aktualisieren des Poolmodus migriert werden, sodass sie Systemknotenpools enthalten.
- 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 einem und sechs Zeichen bestehen.
- Der Modus eines Knotenpools ist eine erforderliche Eigenschaft und muss explizit festgelegt werden, wenn ARM-Vorlagen oder direkte API-Aufrufe verwendet werden.
System- und Benutzerknotenpools
Bei einem Systemknotenpool weist AKS seinen Knoten automatisch die Bezeichnung kubernetes.azure.com/mode: system zu. Dies bewirkt, dass AKS die Planung von Systempods in Knotenpools bevorzugt, die diese Bezeichnung enthalten. Diese Bezeichnung hindert Sie nicht daran, Anwendungspods in Systemknotenpools einzuplanen. Es wird jedoch empfohlen, dass Sie kritische Systempods von Ihren Anwendungspods isolieren, um zu verhindern, dass falsch konfigurierte oder nicht autorisierte Anwendungspods versehentlich Systempods zerstören.
Sie können dieses Verhalten durch Erstellen eines dedizierten Systemknotenpools erzwingen. Verwenden Sie den CriticalAddonsOnly=true:NoSchedule-Taint, um zu verhindern, dass Anwendungspods in Systemknotenpools geplant werden.
Für Systemknotenpools gelten folgende Einschränkungen:
- Systemknotenpools müssen gemäß der Formel für die mindestens erforderliche und maximal zulässige Anzahl von Pods mindestens 30 Pods unterstützen.
- Bei Systempools muss als „osType“ Linux angegeben werden.
- OsType für Benutzerknotenpools kann Linux oder Windows sein.
- Systempools müssen mindestens zwei Knoten enthalten, während Benutzerknotenpools keine oder mehrere Knoten enthalten können.
- Für Systemknotenpools ist eine VM SKU mit mindestens 4 vCPUs und 4 GB Arbeitsspeicher erforderlich.
- VMs der B-Serie werden für Systemknotenpools nicht unterstützt.
- Es werden mindestens drei Knoten und 8 vCPUs oder zwei Knoten und 16 vCPUs empfohlen (z. B. Standard_DS4_v2), insbesondere für große Cluster (mehrere CoreDNS-Podreplikate, 3 bis 4 oder mehr Add-Ons usw.).
- Für Spot-Knotenpools sind Benutzerknotenpools erforderlich.
- Wenn Sie einen zusätzlichen Systemknotenpool hinzufügen oder ändern, welcher Knotenpool ein Systemknotenpool ist, werden die Systempods nicht automatisch verschoben. Systempods können auch dann weiterhin im selben Knotenpool ausgeführt werden, wenn Sie diesen in einen Benutzerknotenpool ändern. Wenn Sie einen Knotenpool, auf dem Systempods ausgeführt werden und der zuvor ein Systemknotenpool war, löschen oder herunterskalieren, werden diese Systempods nach einem Zeitplan mit höherer Priorität im neuen Systemknotenpool erneut bereitgestellt.
Mit Knotenpools sind folgende Vorgänge möglich:
- Erstellen Sie einen dedizierten Systemknotenpool (bevorzugen Sie die Planung von Systempods in Knotenpools von
mode:system) - Sie können aus einem Systemknotenpool einen Benutzerknotenpool machen, sofern im AKS-Cluster ein anderer Systemknotenpool als Ersatz vorhanden ist.
- Sie können aus einem Benutzerknotenpool einen Systemknotenpool machen.
- Sie können Benutzerknotenpools löschen.
- Systemknotenpools können Sie löschen, wenn im AKS-Cluster ein anderer Systemknotenpool als Ersatz vorhanden ist.
- Ein AKS-Cluster kann mehrere Systemknotenpools enthalten, benötigt jedoch mindestens einen Systemknotenpool.
- Wenn Sie verschiedene unveränderliche Einstellungen für vorhandene Knotenpools ändern möchten, können Sie neue Knotenpools erstellen, um diese zu ersetzen. Ein Beispiel hierfür besteht darin, einen neuen Knotenpool mit einer neuen maxPods-Einstellung hinzuzufügen und den alten Knotenpool zu löschen.
- Verwenden Sie Knotenaffinität, um festzulegen oder zu bevorzugen, welche Knoten basierend auf Knotenbezeichnungen geplant werden können. Sie können
keyaufkubernetes.azure.com,operatoraufInundvaluesvon entwederuserodersystemauf Ihre YAML-Datei festlegen, indem Sie diese Definition mithilfe vonkubectl apply -f yourYAML.yamlanwenden.
Erstellen eines neuen AKS-Clusters mit einem Systemknotenpool
Wenn Sie einen neuen AKS-Cluster erstellen, erhält der anfängliche Knotenpool standardmäßig einen Modus vom Typ system. Neue Knotenpools, die mit az aks nodepool add erstellt werden, sind Benutzerknotenpools, es sei denn, der Parameter "Mode" wird explizit angegeben.
Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myResourceGroup in der Region eastus erstellt.
az group create --name myResourceGroup --location eastus
Erstellen Sie mithilfe des Befehls az aks create einen AKS-Cluster. Im folgenden Beispiel wird ein Cluster mit dem Namen myAKSCluster mit einem dedizierten Systempool erstellt, der zwei Knoten enthält. Stellen Sie sicher, dass Sie für Ihre Produktionsworkloads Systemknotenpools mit mindestens drei Knoten verwenden. Dieser Vorgang kann mehrere Minuten dauern.
# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Hinzufügen eines dedizierten Systemknotenpools zu einem vorhandenen AKS-Cluster
Sie können einem vorhandenen AKS-Cluster einen oder mehrere Systemknotenpools hinzufügen. Es wird empfohlen, Ihre Anwendungspods in Benutzerknotenpools zu platzieren und Systemknotenpools nur für kritische Systempods zuzuweisen. Dadurch wird verhindert, dass nicht autorisierte Anwendungspods versehentlich Systempods löschen. Erzwingen Sie dieses Verhalten mit dem CriticalAddonsOnly=true:NoSchedule-Taint für Ihre Systemknotenpools.
Mit dem folgenden Befehl wird ein dedizierter Knotenpool mit dem Modustyp „system“ und der standardmäßigen Anzahl von drei Knoten hinzugefügt.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name systempool \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System
Details für Ihren Knotenpool anzeigen
Mit dem folgenden Befehl können Sie die Details zu Ihrem Knotenpool anzeigen.
az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool
Für Systemknotenpools wurde ein Modus vom Typ system definiert, für Benutzerknotenpools ein Modus vom Typ user. Vergewissern Sie sich bei einem Systempool, dass der Taint auf CriticalAddonsOnly=true:NoSchedule festgelegt ist, wodurch verhindert wird, dass Anwendungspods in diesem Knotenpool geplant werden können.
{
"agentPoolType": "VirtualMachineScaleSets",
"availabilityZones": null,
"count": 3,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "systempool",
"nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
"nodeLabels": {},
"nodeTaints": [
"CriticalAddonsOnly=true:NoSchedule"
],
"orchestratorVersion": "1.16.10",
"osDiskSizeGb": 128,
"osType": "Linux",
"provisioningState": "Succeeded",
"proximityPlacementGroupId": null,
"resourceGroup": "myResourceGroup",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"upgradeSettings": {
"maxSurge": null
},
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
Aktualisieren von vorhandenen System- und Benutzerknotenpools in Clustern
Hinweis
Zum Festlegen des Modus für einen Systemknotenpool muss eine API der Version 2020-03-01 oder höher verwendet werden. Cluster, die in älteren API-Versionen als 2020-03-01 erstellt werden, enthalten somit nur Benutzerknotenpools. Um Systemknotenpoolfunktionen und -vorteile für ältere Cluster zu erhalten, aktualisieren Sie den Modus vorhandener Knotenpools mit den folgenden Befehlen auf der neuesten Azure CLI-Version.
Der Modus für System- und Benutzerknotenpools kann geändert werden. Sie können aus einem Systemknotenpool nur dann einen Benutzerpool machen, wenn im AKS-Cluster bereits ein anderer Systemknotenpool vorhanden ist.
Mit diesem Befehl wird aus einem Systemknotenpool ein Benutzerknotenpool.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user
Mit diesem Befehl wird aus einem Benutzerknotenpool ein Systemknotenpool.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system
Löschen eines Systemknotenpools
Hinweis
Wenn Sie in AKS-Clustern älter als API-Version 2020-03-02 Systemknotenpools verwenden möchten, fügen Sie einen neuen Systemknotenpool hinzu, und löschen Sie anschließend den ursprünglichen Standardknotenpool.
Im AKS-Cluster müssen mindestens zwei Systemknotenpools vorhanden sein, damit Sie einen davon löschen können.
az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool
Bereinigen von Ressourcen
Wenn Sie den Cluster löschen möchten, verwenden Sie den Befehl az group delete, um die AKS-Ressourcengruppe zu löschen:
az group delete --name myResourceGroup --yes --no-wait
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie Systemknotenpools in einem AKS-Cluster erstellen und verwalten. Informationen zum Starten und Beenden von AKS-Knotenpools finden Sie unter Starten und Beenden von AKS-Knotenpools.