Konfigurieren mehrerer Knoten und Aktivieren der Skalierung auf null mit AKS

Abgeschlossen

Mit Azure Kubernetes Service können Sie verschiedene Knotenpools erstellen, um bestimmte Workloads mit den Knoten abzugleichen, die in jedem Knotenpool ausgeführt werden. Der Prozess des Abgleichens von Workloads mit Knoten ermöglicht es Ihnen, den Computeverbrauch zu planen und die Kosten zu optimieren.

Die Lösung für das Drohnentracking in Ihrem Unternehmen wird wie viele containerisierte Anwendungen und Dienste in Azure Kubernetes Service (AKS) bereitgestellt. Ihr Team hat einen neuen prädiktiven Modellierungsdienst entwickelt, der Flugrouteninformationen unter extremen Wetterbedingungen verarbeitet und optimale Flugrouten erstellt. Dieser Dienst erfordert Unterstützung durch GPU-basierte virtuelle Computer (VMs) und wird nur an bestimmten Tagen der Woche ausgeführt.

Sie möchten einen dedizierten Clusterknotenpool für die Verarbeitung von Flugrouteninformationen konfigurieren. Der Prozess wird nur einige Stunden pro Tag ausgeführt, und Sie sollten einen GPU-basierten Knotenpool verwenden. Sie möchten jedoch nur für die Knoten bezahlen, wenn Sie sie verwenden.

Sehen wir uns an, wie Knotenpools verwendet werden, wie Knoten in AKS verwendet werden und wie die Knotenanzahl in einem Knotenpool skaliert wird.

Was ist ein Knotenpool?

Ein Knotenpool beschreibt eine Gruppe von Knoten mit der gleichen Konfiguration in einem AKS-Cluster. Diese Knoten enthalten die zugrunde liegenden VMs, auf denen Ihre Anwendungen ausgeführt werden. Sie können zwei Typen von Knotenpools in einem von AKS verwalteten Kubernetes-Cluster erstellen:

  • Systemknotenpools

  • Benutzerknotenpools

Systemknotenpools

Systemknotenpools hosten kritische Systempods, die die Steuerungsebene des Clusters bilden. Ein Systemknotenpool ermöglicht nur die Verwendung von Linux als Knotenbetriebssystem und führt nur Linux-basierte Workloads aus. Knoten in einem Systemknotenpool sind für Systemworkloads reserviert und werden normalerweise nicht zum Ausführen von benutzerdefinierten Workloads verwendet. Jeder AKS-Cluster muss mindestens einen Systemknotenpool mit mindestens einem Knoten enthalten, und Sie müssen die zugrunde liegenden VM-Größen für Knoten definieren.

Benutzerknotenpools

Benutzerknotenpools unterstützen Ihre Workloads und ermöglichen es Ihnen, Windows oder Linux als Knotenbetriebssystem anzugeben. Sie können auch die zugrunde liegenden VM-Größen für Knoten definieren und bestimmte Workloads ausführen. Die Drohnentrackinglösung verfügt beispielsweise über einen Batchverarbeitungsdienst, den Sie in einem Knotenpool mit einer Konfiguration für universelle VMs bereitstellen. Der neue prädiktive Modellierungsdienst erfordert GPU-basierte VMs mit höherer Kapazität. Sie entscheiden sich für die Konfiguration eines separaten Knotenpools und konfigurieren ihn für die Verwendung von GPU-fähigen Knoten.

Anzahl der Knoten in einem Knotenpool

Sie können in einem Knotenpool bis zu 100 Knoten konfigurieren. Die Anzahl der Knoten, die Sie konfigurieren möchten, hängt jedoch von der Anzahl der Pods ab, die pro Knoten ausgeführt werden.

Beispielsweise ist es in einem Systemknotenpool von entscheidender Bedeutung, die Höchstanzahl von Pods, die auf einem einzelnen Knoten ausgeführt werden sollen, auf 30 festzulegen. Mit diesem Wert wird sichergestellt, dass ausreichend Speicherplatz verfügbar ist, um die Systempods auszuführen, die für die Clusterintegrität essenziell sind. Wenn die Anzahl der Pods diesen Mindestwert überschreitet, sind im Pool neue Knoten erforderlich, um zusätzliche Workloads zu planen. Aus diesem Grund benötigt der Systemknotenpool mindestens einen Knoten im Pool. Für Produktionsumgebungen beträgt die empfohlene Knotenanzahl für einen Systemknotenpool mindestens drei Knoten.

Benutzerknotenpools sind so konzipiert, dass sie benutzerdefinierte Workloads ausführen und nicht die 30-Pod-Anforderung aufweisen. Mit Benutzerknotenpools können Sie die Knotenanzahl für einen Pool auf null festlegen.

Verwalten des Anwendungsbedarfs in einem AKS-Cluster

Wenn Sie in AKS die Menge an Rechenressourcen in einem Kubernetes-Cluster erhöhen oder verringern, skalieren Sie. Sie können die Anzahl der Workloadinstanzen, die ausgeführt werden müssen, oder die Anzahl der Knoten, auf denen diese Workloads ausgeführt werden, skalieren. Sie haben zwei Möglichkeiten zum Skalieren von Workloads in einem von AKS verwalteten Cluster. Die erste Option besteht darin, die Pods oder Knoten nach Bedarf manuell zu skalieren. Die zweite Option besteht in der Automatisierung, bei der Sie die horizontale automatische Podskalierungsfunktion zum Skalieren von Pods und die automatische Clusterskalierung zum Skalieren von Knoten verwenden können.

Manuelles Skalieren eines Knotenpools

Wenn Sie Workloads ausführen, die für eine bestimmte Dauer in bestimmten bekannten Intervallen ausgeführt werden, ist die manuelle Skalierung der Knotenpoolgröße eine gute Möglichkeit, die Knotenkosten zu steuern.

Angenommen, der Predictive-Modeling-Dienst erfordert einen GPU-basierten Knotenpool und wird täglich mittags für eine Stunde ausgeführt. Sie können den Knotenpool mit bestimmten GPU-basierten Knoten konfigurieren und den Knotenpool auf null Knoten skalieren, wenn Sie den Cluster nicht verwenden.

Im Folgenden finden Sie ein Beispiel des az aks node pool add-Befehls, das Sie zum Erstellen des Knotenpools verwenden können. Beachten Sie den --node-vm-size-Parameter, der die Größe Standard_NC6 für die GPU-basierte VM für die Knoten im Pool angibt.

az aks nodepool add \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

Sobald der Pool bereit ist, können Sie den Befehl az aks nodepool scale verwenden, um den Knotenpool auf null Knoten zu skalieren. Beachten Sie den --node-count-Parameter, der auf null festgelegt ist. Das folgende Beispiel zeigt den Befehl:

az aks nodepool scale \
    --resource-group resourceGroup \
    --cluster-name aksCluster \
    --name gpunodepool \
    --node-count 0

Automatisches Skalieren eines Clusters

Diagram that shows how the cluster autoscaler adds nodes and how the horizontal pod autoscaler adds pods.

AKS nutzt zum automatischen Skalieren von Workloads die automatische Kubernetes-Clusterskalierung. Der Cluster kann über eine der folgenden beiden Optionen skaliert werden:

  • Mit der automatischen horizontalen Podskalierung

  • Mit der automatischen Clusterskalierung

Sehen Sie sich diese beiden Optionen nun an, und beginnen Sie dabei mit der automatischen horizontalen Podskalierung.

Automatische horizontale Podskalierung

Die automatische horizontale Podskalierung von Kubernetes dient zum Überwachen des Ressourcenbedarfs in einem Cluster und zum automatischen Skalieren der Anzahl von Workloadreplikaten.

Der Metrikserver in Kubernetes erfasst Speicher- und Prozessormetriken von Controllern, Knoten und Containern, die im AKS-Cluster ausgeführt werden. Eine der Möglichkeiten, auf diese Informationen zuzugreifen, ist die Verwendung der Metrik-API. Die automatische horizontale Skalierung überprüft die Metrik-API alle 30 Sekunden, um zu entscheiden, ob Ihre Anwendung zusätzliche Instanzen benötigt, um dem erforderlichen Bedarf zu genügen.

Angenommen, Ihr Unternehmen verfügt auch über einen Batchverarbeitungsdienst, der Drohnenflugrouten plant. Sie bemerken, dass der Dienst mit Anforderungen überflutet wird und ein Lieferrückstand entsteht, was zu Verzögerungen und frustrierten Kunden führt. Das Erhöhen der Anzahl von Batchprozess-Dienstreplikaten könnte die rechtzeitige Verarbeitung von Aufträgen ermöglichen.

Zur Lösung des Problems konfigurieren Sie die automatische horizontale Podskalierung, um die Anzahl der Dienstreplikate bei Bedarf zu erhöhen. Wenn die Anzahl der Batchanforderungen verringert wird, wird die Anzahl der Dienstreplikate verringert.

Allerdings skaliert die automatische horizontale Podskalierung nur Pods auf verfügbaren Knoten in den konfigurierten Knotenpools des Clusters.

Automatische Clusterskalierung

Eine Ressourceneinschränkung wird ausgelöst, wenn die automatische horizontale Podskalierung keinen weiteren Pod auf den vorhandenen Knoten in einem Knotenpool planen kann. Sie müssen in Zeiten von Einschränkungen die automatische Clusterskalierungs-Funktion zum Skalieren der Anzahl der Knoten in den Knotenpools eines Clusters verwenden. Die automatische Clusterskalierung überprüft die definierten Metriken und skaliert die Anzahl von Knoten basierend auf den erforderlichen Computeressourcen hoch oder herunter.

Die automatische Clusterskalierung wird zusammen mit der automatischen horizontalen Podskalierung verwendet.

Die automatische Clusterskalierung überwacht sowohl das zentrale Hochskalieren als auch das Herunterskalieren und ermöglicht es dem Kubernetes-Cluster, die Knotenanzahl in einem Knotenpool zu ändern, wenn sich der Ressourcenbedarf ändert.

Sie konfigurieren jeden Knotenpool mit anderen Skalierungsregeln. Beispielsweise könnten Sie nur einen Knotenpool so konfigurieren, dass die automatische Skalierung zugelassen wird. Sie könnten aber auch einen Knotenpool so konfigurieren, dass er nur auf eine bestimmte Anzahl von Knoten skaliert wird.

Wichtig

Sie verlieren die Fähigkeit, die Knotenanzahl auf null zu skalieren, wenn Sie die automatische Clusterskalierung für einen Knotenpool aktivieren. Stattdessen können Sie die Mindestanzahl auf null festlegen, um Clusterressourcen zu sparen.

Überprüfen Sie Ihr Wissen

1.

Angenommen, Ihre Softwarelösung verfügt über drei wichtige Komponenten. Die erste Komponente ist eine Webanwendung. Die zweite Komponente ist ein Dienst, der Onlinebestellungen verarbeitet. Die dritte ist ein Videorendering- und Analysedienst, der nur bei Bedarf ausgeführt wird und GPU-basierte VMs benötigt. Wie viele Knotenpools würden Sie in einem AKS-Cluster (Azure Kubernetes Service) bereitstellen, um die Lösung zu verwalten und Kosten zu optimieren?

2.

Vervollständigen Sie die folgende Aussage. Die automatische Kubernetes-Clusterskalierung skaliert...