Zum Hauptinhalt springen

Automatische Skalierung der NKE Last

Mit automatischer Skalierung musst du dich weniger mit der Kapazitätsplanung auseinandersetzen und die Verfügbarkeit deines Dienstes kann bei Lastspitzen sichergestellt werden. Zudem zahlst du nur für Ressourcen, die zum jeweiligen Zeitpunkt gebraucht werden, und du erhältst automatisch weitere Ressourcen, wenn der Bedarf grösser wird.

Details

Mit einer konfigurierten automatisierten Skalierung fügt NKE dem Cluster automatisch neue Nodes hinzu, wenn die Kapazität deiner neu erstellten Pods nicht für deren Ausführung reicht. Wenn eine Node im Cluster hingegen nicht ausgelastet ist und seine Pods auf anderen Nodes ausgeführt werden können, wird der Node gegebenenfalls gelöscht.

Wenn Ressourcen während der automatischen Skalierung deines Clusters gelöscht oder verschoben werden, können deine Dienste beeinträchtigt werden. Wenn dein Dienst beispielsweise aus einem Controller mit einem einzelnen Replikat besteht, kann der Pod dieses Replikats auf einem anderen Node neu gestartet werden, wenn sein aktueller Node gelöscht wird. Bevor du die automatische Skalierung aktivierst, solltest du überprüfen, dass deine Dienste für Unterbrechungen geeignet sind.

Verfügbarkeit

Automatische Skalierung kann auf einem Node Pool Level im Cockpit konfiguriert werden. Um dies zu nutzen gibt es aber ein paar Konfigurationen die notwendig sind.

Nutzung

Horizontales skalieren der Workloads

  1. Lass uns die maximale Anzahl an Nodes wissen: Wir skalieren deinen Cluster standardmässig nicht auf eine unbeschränkte Anzahl Nodes, um dich vor unerwarteten Kosten zu schützen. Wir haben eine minimale Anzahl von 3 Nodes definiert und eine benutzerdefinierte maximale Anzahl von Nodes. Lass uns wissen, was deine bevorzugte maximale Anzahl an Nodes ist und wir konfigurieren diese.

  2. Setze CPU requests auf deine Pods: Der Cluster Autoscaler benutzt die CPU requests als Basis um zum wissen wie viel Kapazität eine Node zur Verfügung hat. Ohne CPU requests kann der Cluster Autoscaler nicht arbeiten. Zusätzlich ist es eine bewährte Vorgehensweise, ob man den Autoscaler verwendet oder nicht.

  3. Konfiguriere einen Horizontal Pod Autoscaler: Damit die Anzahl der Pods auch mit der anfallenden Last skaliert, kannst du einen Horizontal Pod Autoscaler (HPA) konfigurieren. Sobald alle deine Nodes voll sind, wird dies den Cluster Autoscaler auslösen um mehr Nodes zum Cluster hinzuzufügen. Die Kubernetes Dokumentation hat eine sehr gutes Beispiel um einen HPA zu konfigurieren.

Skalierung anhand benutzerdefinierter Metriken (Keda)

Mithilfe einer von Nine verwalteten Installation von keda kannst du deine Workloads anhand von benutzerdefinierten Metriken skalieren. Keda erlaubt dabei die benötigten Metriken von verschiedenen Backends (keda nennt diese "Scalers") zu beziehen. Keda kann auf einem NKE Cluster via Cockpit installiert werden.

Du kannst die unterstützten Scaler in der Dokumentation finden. Weiterhin besteht auch die Möglichkeit (selbst entwickelte) externe Scaler einzusetzen, welche die Anbindung an bisher nicht unterstützte Metriken erlauben.