Freigeben über


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 taintnpan, 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

Nächste Schritte