Verwalten von Knotenpools für einen Cluster (AKS in Azure Stack HCI 22H2)
Gilt für: AKS in Azure Stack HCI 22H2, AKS unter Windows Server
Hinweis
Informationen zum Verwalten von Knotenpools in AKS in Azure Stack HCI 23H2 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.
Hinweis
Dieses Feature ermöglicht eine bessere Kontrolle über das Erstellen und Verwalten mehrerer Knotenpools. Daher sind separate Befehle für Erstellungs-, Aktualisierungs- und Löschvorgänge erforderlich. Zuvor waren Clustervorgänge über New-AksHciCluster oder Set-AksHciCluster die einzige Möglichkeit, einen Cluster mit einem Windows-Knotenpool und einem Linux-Knotenpool zu erstellen oder zu skalieren. Dieses Feature bietet einen separaten Satz mit Vorgängen für Knotenpools, für die die Knotenpoolbefehle New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool und Remove-AksHciNodePool verwendet werden müssen, um Vorgänge für einen einzelnen Knotenpool auszuführen.
Voraussetzungen
Es wird empfohlen, Version 1.1.6 zu installieren. Wenn Sie das PowerShell-Modul bereits installiert haben, führen Sie den folgenden Befehl aus, um die Version zu finden:
Get-Command -Module AksHci
Wenn Sie PowerShell aktualisieren müssen, befolgen Sie die Anweisungen unter Aktualisieren des AKS-Hosts.
Erstellen eines AKS-Clusters
Erstellen Sie zu Beginn einen AKS-Cluster mit einem einzelnen Knotenpool. Im folgenden Beispiel wird der Befehl New-AksHciCluster verwendet, um einen neuen Kubernetes-Cluster mit einem Linux-Knotenpool namens linuxnodepool zu erstellen, der über einen Knoten verfügt. Wenn Sie bereits einen Cluster mit einer älteren Version von AKS bereitgestellt haben und Ihre alte Bereitstellung weiterhin verwenden möchten, können Sie diesen Schritt überspringen. Sie können den neuen Satz von Knotenpoolbefehlen weiterhin verwenden, um Ihrem vorhandenen Cluster weitere Knotenpools hinzuzufügen.
New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux
Hinweis
Der alte Parametersatz für New-AksHciCluster
wird weiterhin unterstützt.
Hinzufügen eines Knotenpools
Der Cluster mit dem Namen mycluster
*', der im vorherigen Schritt erstellt wurde, verfügt über einen einzelnen Knotenpool. Sie können dem vorhandenen Cluster über den Befehl New-AksHciNodePool einen zweiten Knotenpool hinzufügen. Im folgenden Beispiel wird ein Windows-Knotenpool namens windowsnodepool mit einem Knoten erstellt. Stellen Sie sicher, dass der Name des Knotenpools nicht mit dem Namen eines vorhandenen Knotenpools übereinstimmt.
New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022
Abrufen von Konfigurationsinformationen für einen Knotenpool
Verwenden Sie den Befehl Get-AksHciNodePool, um die Konfigurationsinformationen Ihrer Knotenpools anzuzeigen.
Get-AksHciNodePool -clusterName mycluster
Beispielausgabe:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Verwenden Sie den Parameter in Get-AksHciNodePool, um die -name
Konfigurationsinformationen eines bestimmten Knotenpools anzuzeigen.
Get-AksHciNodePool -clusterName mycluster -name linuxnodepool
Beispielausgabe:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool
Beispielausgabe:
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Hinweis
Wenn Sie die neuen Parameter in New-AksHciCluster
zum Bereitstellen eines Clusters verwenden und dann Get-AksHciCluster
ausführen, um die Clusterinformationen abzurufen, wird in den Feldern WindowsNodeCount
und LinuxNodeCount
in der Ausgabe 0
zurückgegeben. Verwenden Sie den Befehl Get-AksHciNodePool
mit dem angegebenen Clusternamen, um die genaue Anzahl von Knoten in jedem Knotenpool abzurufen.
Skalieren eines Knotenpools
Sie können die Anzahl von Knoten in einem Knotenpool hoch- oder herunterskalieren.
Verwenden Sie zum Skalieren der Knotenanzahl in einem Knotenpool den Befehl Set-AksHciNodePool. Im folgenden Beispiel wird die Anzahl der Knoten in einem Knotenpool linuxnodepool
namens im mycluster
Cluster auf 3 skaliert.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Skalieren der Knoten der Steuerungsebene
Die Verwaltung von Knoten auf Steuerungsebene wurde nicht geändert. Die Art und Weise, wie sie erstellt, skaliert und entfernt werden, bleibt unverändert. Sie stellen weiterhin Knoten auf Steuerungsebene mit dem Befehl New-AksHciCluster mit den Parametern controlPlaneNodeCount
und controlPlaneVmSize
den Standardwerten 1 bzw. Standard_A4_V2 bereit, wenn Sie keine Werte angeben.
Möglicherweise müssen Knoten der Steuerungsebene skaliert werden, wenn sich der Workloadbedarf Ihrer Anwendungen ändert. Skalieren Sie die Knoten der Steuerungsebene mit dem Befehl Set-AksHciCluster. Im folgenden Beispiel werden die Knoten der Steuerungsebene im mycluster
Cluster auf 3 skaliert, die in den vorherigen Schritten erstellt wurde.
Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3
Löschen eines Knotenpools
Wenn Sie einen Knotenpool löschen müssen, verwenden Sie den Befehl Remove-AksHciNodePool. Im folgenden Beispiel wird der Knotenpool namens windowsnodepool
aus dem mycluster
Cluster entfernt.
Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool
Angeben eines Taints für einen Knotenpool
Beim Erstellen eines Knotenpools können Sie dem Pool Taints hinzufügen. Wenn Sie einen Taint hinzufügen, erhalten alle Knoten des Knotenpools diesen Taint. Weitere Informationen zu Taints und Toleranzen finden Sie im Artikel zu den Kubernetes-Taints und -Toleranzen.
Festlegen von Taints für Knotenpools
Verwenden Sie New-AksHciNodePool, um einen Knotenpool mit einem Taint zu erstellen. Geben Sie den Namen taintnp
an, und verwenden Sie den -taints
Parameter, um für den Taint anzugeben sku=gpu:noSchedule
.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Hinweis
Ein Taint kann nur bei der Erstellung des Knotenpools festgelegt werden.
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass der Knotenpool erfolgreich mit dem angegebenen Taint bereitgestellt wurde.
Get-AksHciNodePool -clusterName mycluster -name taintnp
Ausgabe
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=gpu:NoSchedule}
Im vorherigen Schritt haben Sie beim Erstellen Ihres Knotenpools den sku=gpu:NoSchedule-Taint angewendet. Das folgende einfache YAML-Beispielmanifest verwendet eine Toleranz, 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 Sie die Informationen im folgenden Text.
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 dann den Pod mit dem folgenden Befehl.
kubectl apply -f nginx-toleration.yaml
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Pod bereitgestellt wurde:
kubectl describe pod mypod
[...]
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 32s default-scheduler Successfully assigned default/mypod to moc-lk4iodl7h2y
Normal Pulling 30s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Pulled 26s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 4.529046457s
Normal Created 26s kubelet Created container mypod