Verwalten von Knotenpools für einen Cluster (AKS auf Azure Stack HCI 22H2)
Gilt für: AKS auf Azure Stack HCI 22H2, AKS unter Windows Server
Hinweis
Informationen zum Verwalten von Knotenpools in AKS auf Azure Stack HCI 23H2 finden Sie unter Verwalten von Knotenpools.
In AKS, die von Azure Arc aktiviert sind, 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. Bisher waren Clustervorgänge über New-AksHciCluster oder Set-AksHciCluster die einzige Option zum Erstellen oder Skalieren eines Clusters mit einem Windows-Knotenpool und einem Linux-Knotenpool. 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, folgen Sie den Anweisungen im Upgrade 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 1 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 wird New-AksHciCluster
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 mit dem Namen "windowsnodepool " mit einem Knoten erstellt. Stellen Sie sicher, dass der Name des Knotenpools nicht derselbe Name wie ein vorhandener Knotenpool ist.
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
Um die Konfigurationsinformationen eines bestimmten Knotenpools anzuzeigen, verwenden Sie den -name
Parameter in "Get-AksHciNodePool".
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. Um die genaue Anzahl von Knoten in jedem Knotenpool abzurufen, verwenden Sie den Befehl Get-AksHciNodePool
mit dem angegebenen Clusternamen.
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 auf 3 in einem Knotenpool skaliert, der mycluster
im Cluster benannt istlinuxnodepool
.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Skalieren der Knoten der Steuerungsebene
Die Verwaltung von Steuerebenenknoten wurde nicht geändert. Die Art und Weise, wie sie erstellt, skaliert und entfernt werden, bleibt unverändert. Sie stellen weiterhin Steuerebenenknoten 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 Steuerebenenknoten auf 3 im mycluster
Cluster skaliert, die in den vorherigen Schritten erstellt wurden.
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 entfernt, der aus dem mycluster
Cluster benannt istwindowsnodepool
.
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
Output
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