Verwalten von Knotenpools für einen Cluster (AKS in Azure Stack HCI 23H2)
Gilt für: Azure Stack HCI, Version 23H2
Hinweis
Informationen zum Verwalten von Knotenpools in AKS in Azure Stack HCI 22H2 finden Sie unter Verwalten von Knotenpools.
In von Azure Arc aktivierten AKS werden Knoten derselben Konfiguration in Knotenpools gruppiert. Diese Knotenpools enthalten die zugrunde liegenden virtuellen Computer, die Ihre Anwendungen ausführen. In diesem Artikel erfahren Sie, wie Sie Knotenpools für einen Cluster in AKS Arc erstellen und verwalten.
Erstellen eines Kubernetes-Clusters
Erstellen Sie zunächst einen Kubernetes-Cluster mit einem einzelnen Knotenpool:
az aksarc create -n <cluster name> -g <resource group> --custom-location <custom location Id> --vnet-ids <vnet id> --generate-ssh-keys --load-balancer-count <load balancer count>
Hinzufügen eines Knotenpools
Mit dem az aksarc nodepool add
Befehl können Sie einem vorhandenen Cluster einen Knotenpool hinzufügen. Stellen Sie sicher, dass der Name des Knotenpools nicht mit dem Namen eines vorhandenen Knotenpools identisch ist:
az aksarc nodepool add --name <node pool name> -g <resource group> --cluster-name <cluster name> --os-sku <Linux or Windows> --node-count <count> --node-vm-size <vm size>
Abrufen von Konfigurationsinformationen für einen Knotenpool
Verwenden Sie den Befehl, um die Konfiguration Ihrer Knotenpools az aksarc nodepool show
anzuzeigen:
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
Beispielausgabe:
{
"availabilityZones": null,
"count": 1,
"extendedLocation": null,
"id":
"/subscriptions/<subscription>/resourceGroups/edgeci-registration-rr1s46r1710<resource
group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster
name>/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/<nodepoolname>",
"location": "westeurope",
"name": "nodepoolname",
"nodeImageVersion": null,
"osSku": "CBLMariner",
"osType": "Linux",
"provisioningState": "Succeeded",
"resourceGroup": "resourcegroup",
"status": {
"errorMessage": null,
"operationStatus": null,
"readyReplicas": [
{
"count": 1,
"vmSize": "Standard\_A4\_v2"
}
]
},
"systemData": {
…
},
"tags": null,
"type":
"microsoft.hybridcontainerservice/provisionedclusterinstances/agentpools",
"vmSize": "Standard\_A4\_v2"
}
Angeben der maximalen Pods, die in einem Knotenpool bereitgestellt werden
Sie können die maximalen Pods konfigurieren, die bei der Clustererstellung oder beim Erstellen neuer Knotenpools auf einem Knoten bereitgestellt werden können. Wenn Sie beim Erstellen von Knotenpools nicht angeben maxPods
, wird Ihr Knotenpool mit einem Standardwert von maximal 110 Pods bereitgestellt:
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
Skalieren eines Knotenpools
Sie können die Anzahl von Knoten in einem Knotenpool hoch- oder herunterskalieren.
Um die Anzahl der Knoten in einem Knotenpool zu skalieren, verwenden Sie den Befehl az aksarc nodepool scale
. Im folgenden Beispiel wird die Anzahl der Knoten in einem Knotenpool mit dem Namen nodepool1
auf 2 skaliert:
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
Löschen eines Knotenpools
Wenn Sie einen Knotenpool löschen müssen, verwenden Sie den az aksarc nodepool delete
Folgenden Befehl:
az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes
Angeben eines Taints oder einer Bezeichnung für einen Knotenpool
Wenn Sie einen Knotenpool erstellen, können Sie diesem Taints oder Bezeichnungen hinzufügen. Wenn Sie einen Taint oder eine Bezeichnung hinzufügen, erhalten alle Knoten innerhalb dieses Knotenpools auch diese Taint- oder Bezeichnung.
Wichtig
Sie sollten Knoten mit Taints oder Bezeichnungen für den gesamten Knotenpool az aksarc nodepool
hinzufügen. Es wird nicht empfohlen, die Verwendung von zu verwenden kubectl
, um Taints oder Bezeichnungen auf einzelne Knoten in einem Knotenpool anzuwenden.
Festlegen von Taints für Knotenpools
Erstellen Sie mithilfe des Befehls
az aksarc nodepool add
einen Knotenpool mit einem Taint. Geben Sie den Namentaintnp
an, und verwenden Sie den--node-taints
Parameter, um für den Taint anzugebensku=gpu:NoSchedule
:az aksarc nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name taintnp \ --node-count 1 \ --node-taints sku=gpu:NoSchedule \ --no-wait
Überprüfen Sie die status des Knotenpools mit dem
az aksarc nodepool list
Befehl:az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
Die folgende Beispielausgabe zeigt, dass der
taintnp
Knotenpool Knoten mit dem angegebenennodeTaints
erstellt:[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
Die Taint-Informationen sind in Kubernetes für die Behandlung von Planungsregeln für Knoten sichtbar. Der Kubernetes-Scheduler kann Taints und Toleranzen verwenden, um einzuschränken, welche Workloads auf Knoten ausgeführt werden können.
- Ein Taint wird auf einen Knoten angewendet, der anzeigt, dass nur bestimmte Pods darauf geplant werden können.
- Anschließend wird eine Toleranz auf einen Pod angewendet, der es ihnen ermöglicht, den Taint eines Knotens zu "tolerieren".
Festlegen von Knotenpooltoleranzen
Im vorherigen Schritt haben Sie den sku=gpu:NoSchedule
Taint angewendet, als Sie den Knotenpool erstellt haben. Im folgenden YAML-Beispielmanifest wird eine Toleranz verwendet, damit der Kubernetes-Planer einen NGINX-Pod auf einem Knoten in diesem Knotenpool ausführen kann:
Erstellen Sie eine Datei mit dem Namen nginx-toleration.yaml , und kopieren/fügen Sie das folgende YAML-Beispiel ein:
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 1 memory: 2G tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"
Planen Sie den Pod mit dem Befehl
kubectl apply
:kubectl apply -f nginx-toleration.yaml
Es dauert einige Sekunden, um den Pod zu planen und das NGINX-Image per Pull abzurufen.
Überprüfen Sie die status mit dem
kubectl describe pod
Befehl:kubectl describe pod mypod
Die folgende verkürzte Beispielausgabe zeigt, dass die
sku=gpu:NoSchedule
Toleranz angewendet wird. Im Abschnitt Ereignisse hat der Planer den Pod demmoc-lbeof1gn6x3
Knoten zugewiesen:[...] Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s sku=gpu:NoSchedule Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 54s default-scheduler Successfully assigned default/mypod to moc-lbeof1gn6x3 Normal Pulling 53s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" Normal Pulled 48s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting) Normal Created 48s kubelet Created container Normal Started 48s kubelet Started container
Nur Pods, für die diese Toleranz angewendet wurde, können auf Knoten in
taintnp
geplant werden. Alle anderen Pods werden im Knotenpool nodepool1 geplant. Wenn Sie mehr Knotenpools erstellen, können Sie mit Taints und Toleranzen einschränken, welche Pods für diese Knotenressourcen geplant werden können.
Festlegen von Bezeichnungen für Knotenpools
Weitere Informationen finden Sie unter Verwenden von Bezeichnungen in einem Azure Arc-fähigen AKS-Cluster. ::: zone-end
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für