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/&lt;subscription&gt;/resourceGroups/edgeci-registration-rr1s46r1710&lt;resource
group&gt;/providers/Microsoft.Kubernetes/connectedClusters/&lt;cluster
name&gt;/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/&lt;nodepoolname&gt;",
"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 nodepool1auf 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 nodepoolhinzufü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

  1. Erstellen Sie mithilfe des Befehls az aksarc nodepool add einen Knotenpool mit einem Taint. Geben Sie den Namen taintnp an, und verwenden Sie den --node-taints Parameter, um für den Taint anzugeben sku=gpu:NoSchedule :

    az aksarc nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name taintnp \
        --node-count 1 \
        --node-taints sku=gpu:NoSchedule \
        --no-wait
    
  2. Ü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 angegebenen nodeTaintserstellt:

    [
      {
        ...
        "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:

  1. 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"
    
  2. 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.

  3. Ü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 dem moc-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 taintnpgeplant 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