Skalieren und Konfigurieren von Knotenpools in Azure Red Hat OpenShift mit gehosteten Steuerelementebenen (Vorschau)

Nachdem Sie Knotenpools in Ihrem Azure Red Hat OpenShift-Cluster mit gehosteten Steuerungsebenen erstellt haben, können Sie diese skalieren, um die Kapazität anzupassen, die Platzierung von Workloads mit Labels und Taints zu steuern, das Drain-Verhalten von Knoten zu konfigurieren und Knotenpools zu löschen, die Sie nicht mehr benötigen.

Voraussetzungen

  • Ein vorhandenes Azure Red Hat OpenShift-Cluster mit gehosteten Steuerungsebenen und mindestens einem Knotenpool.
  • Azure CLI Version 2.67.0 oder höher. Verwenden Sie az --version, um Ihre installierte Version zu finden. Wenn Sie eine Installation oder ein Upgrade durchführen müssen, finden Sie weitere Informationen unter Azure CLI installieren.
  • Die ARO HCP CLI-Erweiterung wird installiert. Wenn Sie es installieren müssen, führen Sie az extension add --name aro aus.

Festlegen von Umgebungsvariablen

Wenn Sie die folgenden Umgebungsvariablen noch nicht festgelegt haben, legen Sie sie in Der Shell fest, bevor Sie fortfahren. Ersetzen Sie die Platzhalterwerte durch Ihre eigenen Werte.

CUSTOMER_RG_NAME="<resource-group-name>"
CLUSTER_NAME="<cluster-name>"
NP_NAME="<node-pool-name>"

Skalieren eines Knotenpools

Skalieren Sie einen vorhandenen Knotenpool, um die Kapazität für sich ändernde Workloadanforderungen anzupassen. Legen Sie eine bestimmte Replikatanzahl für die manuelle Skalierung fest, oder konfigurieren Sie die automatische Skalierung, um die Knotenanzahl innerhalb eines definierten Bereichs automatisch anzupassen.

Note

Sie müssen entweder replicas oder autoScaling für einen Knotenpool konfigurieren, aber nicht für beides.

  1. Aktualisieren Sie die Anzahl der Knotenpoolreplikate oder die automatische Skalierungskonfiguration.

    Im folgenden Beispiel wird ein Knotenpool mit fester Replikatanzahl auf vier Replikate skaliert. Wenn der Knotenpool derzeit die automatische Skalierung verwendet, fügen Sie --remove properties.autoScaling ihn hinzu, um ihn zu deaktivieren:

    az aro hcp cluster nodepool update \
      --resource-group "${CUSTOMER_RG_NAME}" \
      --cluster-name "${CLUSTER_NAME}" \
      --name "${NP_NAME}" \
      --replicas 4 \
      --remove properties.autoScaling
    

    Um von einer festen Replikatanzahl zur automatischen Skalierung zu wechseln, fügen Sie den automatischen Skalierungsbereich hinzu --remove properties.replicas und stellen diesen bereit:

    az aro hcp cluster nodepool update \
      --resource-group "${CUSTOMER_RG_NAME}" \
      --cluster-name "${CLUSTER_NAME}" \
      --name "${NP_NAME}" \
      --min-replicas 2 \
      --max-replicas 8 \
      --remove properties.replicas
    
  2. Überprüfen Sie die Änderungen des Knotenpools.

    oc get nodes
    

Platzierung von Workloads steuern

Wenden Sie Labels und Taints auf einen Knotenpool an, um zu steuern, welche Workloads auf dessen Knoten eingeplant werden. Verwenden Sie Labels, um Knoten mithilfe von Knotenselektoren und Affinitätsregeln gezielt auszuwählen. Verwenden Sie "Taints", um Pods abzuwehren, die nicht über eine entsprechende Toleration verfügen, sodass Sie Knotenpools bestimmten Workloads zuordnen können.

Von Bedeutung

Label- und Taint-Aktualisierungen werden nur auf neu erstellte Knoten im Knotenpool angewendet. Das Aktualisieren von Labels oder Taints löst keinen rollierenden Austausch vorhandener Knoten aus. Wenn Sie Labels oder Taints auf alle Knoten anwenden möchten, löschen Sie den Knotenpool und erstellen Sie einen neuen mit der gewünschten Konfiguration.

  1. Fügen Sie Labels und Taints für den Knotenpool hinzu oder aktualisieren Sie sie.

    Im folgenden Beispiel werden einem Knotenpool ein Label und ein Taint hinzugefügt:

    az aro hcp cluster nodepool update \
      --resource-group "${CUSTOMER_RG_NAME}" \
      --cluster-name "${CLUSTER_NAME}" \
      --name "${NP_NAME}" \
      --labels "[{key:workload-type,value:gpu}]" \
      --taints "[{key:dedicated,value:gpu-workloads,effect:NoSchedule}]"
    

    Die effect Eigenschaft bestimmt, wie sich der Taint auf die Pod-Planung auswirkt:

    Effect Beschreibung
    NoSchedule Der Scheduler plant keine Pods auf Knoten ohne passende Toleranz ein. Vorhandene Pods werden nicht entfernt.
    PreferNoSchedule Der Scheduler vermeidet die Platzierung von Pods ohne passende Tolerierung auf dem Knoten, verhindert dies jedoch nicht.
    NoExecute Der Scheduler weist Pods ohne passende Toleration keinem Knoten zu, und vorhandene Pods ohne passende Toleration werden vom Knoten entfernt.
  2. Stellen Sie sicher, dass die Bezeichnungen auf den Knotenpool angewendet werden.

    az aro hcp cluster nodepool show \
      --resource-group "${CUSTOMER_RG_NAME}" \
      --cluster-name "${CLUSTER_NAME}" \
      --name "${NP_NAME}" \
      --query "properties.labels"
    

    Die folgende Beispielausgabe zeigt die Bezeichnung, die auf den Knotenpool angewendet wird:

    [
      {
        "key": "workload-type",
        "value": "gpu"
      }
    ]
    

Konfigurieren des Knotenabflussverhaltens

Legen Sie die Karenzzeit für das Leeren des Knotens fest, um zu steuern, wie lange der Upgrade-Prozess Pod Disruption Budget (PDB)-geschützte Workloads berücksichtigt, wenn er Knoten im Pool ersetzt. Nach Ablauf der Karenzfrist entfernt der Prozess zwangsweise alle verbleibenden Workloads.

Die Eigenschaft für das Node-Drain-Timeout in einem Knotenpool überschreibt den clusterweiten Standardwert für diesen Knotenpool. Der Wertbereich beträgt 0 bis 10.080 Minuten (1 Woche). Ein Wert von 0 bedeutet, dass der Knoten ohne zeitliche Begrenzung entleert wird, bis der Vorgang abgeschlossen ist.

Im folgenden Beispiel wird ein Drain-Timeout von 30 Minuten festgelegt:

az aro hcp cluster nodepool update \
  --resource-group "${CUSTOMER_RG_NAME}" \
  --cluster-name "${CLUSTER_NAME}" \
  --name "${NP_NAME}" \
  --node-drain-timeout 30

Löschen eines Knotenpools

  1. Löschen Sie einen Knotenpool, wenn Sie ihn nicht mehr benötigen oder wenn Sie ihn mit unterschiedlichen unveränderlichen Eigenschaften neu erstellen müssen.

    az aro hcp cluster nodepool delete \
      --resource-group "${CUSTOMER_RG_NAME}" \
      --cluster-name "${CLUSTER_NAME}" \
      --name "${NP_NAME}" \
      -y
    
  2. Stellen Sie sicher, dass die Knoten gelöscht werden.

    oc get nodes