20.12.2024

Optimierte Ressourcennutzung und Kostenkontrolle.

Effiziente Betriebszeiten mit KEDA: Dynamisches Autoscaling für Kubernetes-Cluster

Kubernetes ist leistungsstark, doch ohne optimierte Betriebszeiten können unnötige Ressourcen und Kosten entstehen. KEDA (Kubernetes Event - Driven Autoscaling) ermöglicht es, Workloads dynamisch zu skalieren und z.B. außerhalb definierter Betriebszeiten zu pausieren. In diesem Blogpost zeigen wir, wie du mit KEDA deinen Cluster an Arbeitszeiten anpasst – für mehr Effizienz und reduzierte Hosting-Kosten.

Effiziente Betriebszeiten mit KEDA

Inhaltsverzeichnis

Einführung in Kubernetes Autoscaling

Kubernetes bringt bereits viel Automatismus und Möglichkeiten zur Effizienzoptimierung mit sich. Sei es das Zuweisen von Workloads zu den Nodes, Readiness- und Liveness - Probes, um hängende Container neu zu starten, oder ein dynamisches Hinzufügen oder Entfernen von Nodes mittels Cluster Autoscaler. Auch ein dynamisches Skalieren einzelner Workloads anhand der Ressourcen-Auslastung ist mittels Horizontal Pod Autoscaling möglich. Doch damit lassen sich nicht alle Anforderungen abdecken. Was ist z.B. mit einem Cluster, der nur werktags zu den Arbeitszeiten benötigt wird? In diesem Blogpost betrachten wir, wie du Kubernetes Workloads mittels KEDA anhand eines zeitbasierten Schedules skalieren kannst.

Was ist KEDA?

KEDA greift den Gedanken des Pod Autoscaling auf und erweitert ihn um die Möglichkeit, nicht nur anhand der Ressourcenauslastung zu skalieren, sondern auch anhand allgemeinerer Events. Die Events können z.B. auf Datenbank-Queries basieren, auf Metriken eines Message-Brokers, auf einem Cron-Schedule und vielem mehr.

Derzeit unterstützt KEDA 71 sogenannte Scaler, die du als Basis für das eventbasierte Autoscaling verwenden kannst. Du musst dazu lediglich ein ScaledObject anlegen, eine CustomResourceDefinition von KEDA. Der keda-operator, der im Cluster deployt ist, erzeugt daraufhin dynamisch eine entsprechende HorizontalPodAutoscaler Ressource, um deine selektierten Workloads anhand der spezifizierten Events zu skalieren.

Cron-Scaler um Betriebszeiten zu definieren

Um die Workloads eines Clusters außerhalb der Betriebszeiten auf 0 zu skalieren, nutzen wir den Cron-Scaler. Dieser ermöglicht es, ein Cron-Schedule mit Start- und Endzeit zu definieren, innerhalb dessen die Workloads auf eine gewünschte Anzahl an Replicas skaliert werden. Außerhalb des Schedules werden die Workloads auf die spezifizierte Mindestanzahl skaliert.

Anhand eines exemplarischen ScaledObjects zum beschriebenen Szenario wirst du sehen, wie einfach die Konfiguration für unseren Anwendungsfall ist:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: cron-scaledobject
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-deployment
  minReplicaCount: 0
  maxReplicaCount: 3
  cooldownPeriod: 60
  triggers:
  - type: cron
    metadata:
      timezone: Europe/Berlin
      start: 0 6 * * 1-5
      end: 0 20 * * 1-5
      desiredReplicas: "3"

Was passiert hier?

Das selektierte Deployment ist my-deployment, im default-Namespace. Der minReplicaCount ist 0, damit es außerhalb der Betriebszeiten auf 0 skaliert wird. Start und Ende der Betriebszeit sind mit den Cron-Schedules 0 6 * * 1-5, bzw. 0 20 * * 1-5 spezifiziert. D.h. montags bis freitags zwischen 6:00 und 20:00 wird das Deployment auf die 3 Replicas skaliert, was durch den Parameter desiredReplicas angegeben ist. Dies sorgt für einen effizienteren Ressourcenverbrauch.

Blueshoe expert Michael SchilonkaMichael Schilonka

Wir können auch Deine Apps dynamisch an den Bedarf anpassen.

Wie hoch ist die Kostenersparnis?

Die wirklich spannende Frage ist: Wie groß ist der Effizienzgewinn und somit die Kostenersparnis durch die Umsetzung von Betriebszeiten? Das hängt ganz stark von deinem Setup ab.

Voraussetzung

Der Cluster Autoscaler muss aktiv sein, damit ungenutzte Nodes entfernt werden können. Die Höhe der Einsparungen hängt dann davon ab, wie viele Workloads außerhalb der Betriebszeiten pausiert werden können.

Beispiel

  • Wenn in deinem Cluster 10 Anwendungen laufen und nur eine außerhalb der Betriebszeiten skaliert wird, bleibt der Effekt gering.
  • Kannst du hingegen 9 Workloads pausieren, reduziert sich der Bedarf an Nodes erheblich – das spart spürbare Kosten.

Fazit

KEDA macht es sehr einfach, Kubernetes-Workloads anhand zeitbasierter Events dynamisch zu skalieren. Die Installation und die Spezifikation der ScaledObjects sind unkompliziert und nehmen wenig Zeit in Anspruch.

Auch wenn die genaue Kostenersparnis nicht pauschal prognostiziert werden kann, lohnt sich der Einsatz von KEDA langfristig, wenn deine Workloads eine zeitbasierte Charakteristik aufweisen.

Häufige Fragen

1. Was ist KEDA und wie unterscheidet es sich vom Kubernetes Horizontal Pod Autoscaler (HPA)?

KEDA (Kubernetes Event-Driven Autoscaling) erweitert das klassische Horizontal Pod Autoscaling (HPA) in Kubernetes. Während HPA Workloads basierend auf Ressourcen wie CPU- oder Speicherauslastung skaliert, ermöglicht KEDA das Autoscaling basierend auf externen Ereignissen. Dazu gehören Datenbank-Abfragen, Message-Broker-Metriken oder zeitgesteuerte Trigger. KEDA arbeitet ergänzend zum HPA, indem es externe Metriken übermittelt und so flexiblere Skalierungsmöglichkeiten schafft.

2. Welche Vorteile bietet KEDA für das dynamische Autoscaling von Kubernetes-Workloads?

KEDA bietet folgende Vorteile:

  • Flexibilität: Skalierung basierend auf externen Ereignissen (z. B. Kafka, Prometheus oder Azure Event Hubs).
  • Zero Scaling: Workloads können auf 0 Pods reduziert werden, wenn keine Ressourcen benötigt werden.
  • Einfache Integration: KEDA arbeitet nahtlos mit HPA zusammen und nutzt bestehende Kubernetes-Mechanismen.
  • Kostenersparnis: Durch bedarfsgerechte Skalierung können unnötige Ressourcen vermieden werden.
  • Breite Unterstützung: Mit über 70 Scalers ist KEDA vielseitig einsetzbar.

3. Wie funktioniert der Cron-Scaler von KEDA für zeitbasiertes Autoscaling?

Der Cron-Scaler in KEDA ermöglicht die zeitgesteuerte Skalierung von Workloads. Du definierst ein Cron-Schedule mit Start- und Endzeit sowie der gewünschten Anzahl an Replicas. Außerhalb dieses Zeitfensters werden Workloads auf die spezifizierte Mindestanzahl (z. B. 0 Pods) skaliert.

Beispiel: Ein Deployment kann von Montag bis Freitag zwischen 6:00 und 20:00 auf 3 Pods hochskaliert und außerhalb dieser Zeiten auf 0 reduziert werden.

4. Welche Ereignisquellen (Scaler) unterstützt KEDA für das Autoscaling?

KEDA unterstützt über 70 Scalers, darunter:

  • Message-Broker: Kafka, RabbitMQ, Azure Event Hubs.
  • Datenbanken: MySQL, PostgreSQL, MongoDB.
  • Metrikquellen: Prometheus, AWS CloudWatch, Azure Monitor.
  • Zeitbasierte Trigger: Cron-Schedules.
  • Weitere: Redis, GitHub Actions, AWS SQS, und mehr.

KEDA lässt sich zudem durch benutzerdefinierte Scaler erweitern, um nahezu jede Ereignisquelle zu integrieren.

5. Was bedeutet Zero Scaling und wie hilft KEDA dabei?

Zero Scaling bedeutet, dass Workloads vollständig deaktiviert werden, indem ihre Anzahl an Pods auf 0 gesetzt wird. KEDA ermöglicht dies durch die Nutzung von Ereignisquellen, die bei Bedarf Pods aktivieren. Dies reduziert die Ressourcennutzung drastisch, wenn keine Ereignisse vorliegen, und hilft, Kosten zu sparen, während die Cluster-Effizienz maximiert wird.

6. Ist KEDA für alle Kubernetes-Anwendungen geeignet oder gibt es Einschränkungen?

KEDA ist für viele Anwendungen geeignet, insbesondere für:

  • Event-getriebene Anwendungen (z. B. Message-Broker, Datenbankoperationen).
  • Workloads mit zeitbasierten Anforderungen (z. B. Geschäftszeiten).
  • Metrikbasierte Anwendungen, die auf externe Signale reagieren.

Einschränkungen:

  • KEDA ist auf Anwendungen ausgelegt, die skalierbare Architekturen verwenden (z. B. Deployments, Jobs).
  • Workloads, die dauerhaft laufen müssen, profitieren weniger von KEDA, da Zero Scaling hier nicht möglich ist.
  • Dein Cluster benötigt einen aktiven Cluster Autoscaler, um Nodes bei Zero Scaling zu entfernen.

Tipp: Für Anwendungen mit festen Ressourcenanforderungen oder kontinuierlicher Verfügbarkeit ist HPA allein möglicherweise ausreichend.

Was unsere Kunden über uns sagen

Ofa Bamberg GmbHRainer Kliewe
Ludwig-Maximilians-Universität MünchenProf. Dr. Mario Haim
Deutsches MuseumGeorg Hohmann
Fonds Finanz Maklerservice GmbHNorbert Porazik
Technische Universität HamburgSören Schütt-Sayed
  • Ofa Bamberg GmbH
    Ofa Bamberg GmbH
    B2B Online-Shop | B2C Website | Hosting | Betreuung | Security
    Rainer Kliewe
    © Ofa Bamberg GmbH
    Blueshoe betreut uns und unsere Webapplikationen seit vielen Jahren. Vom Online-Shop bis hin zu großen Teilen unseres Web-Umfelds hat sich das Unternehmen stets kompetent, verlässlich und vorausschauend gezeigt. Wir sind sehr zufrieden mit Blueshoe als Partner.
    Rainer KlieweGeschäftsführer
  • Ludwig-Maximilians-Universität München
    Ludwig-Maximilians-Universität München
    Plattformentwicklung | Hosting | Betreuung | APIs | Website
    Prof. Dr. Mario Haim
    Blueshoe hat unsere Forschungsdatenplattform Munich Media Monitoring (M3) entwickelt und uns hervorragend dabei beraten. Das Team hat unsere Anforderungen genau verstanden und sich aktiv in die Ausgestaltung der Software und der Betriebsumgebung eingebracht. Wir sind froh, dass auch Wartung und weiterführender Support in Blueshoes Händen liegen.
    Prof. Dr. Mario HaimLehrstuhlinhaber, Institut für Kommunikationswissenschaft und Medienforschung
  • Deutsches Museum
    Deutsches Museum
    Digitalisierung | Beratung | Datenbank-Optimierung | GraphQL | CMS
    Georg Hohmann
    Foto: Anne Göttlicher
    Im Rahmen eines komplexen Digitalisierungsprojekts für unsere Exponate-Datenbank war Blueshoe ein äußerst verlässlicher Partner. Sie haben uns nicht nur während des gesamten Projekts hervorragend beraten, sondern unsere Anforderungen perfekt umgesetzt. Dank ihrer Arbeit ist unsere Datenbank nun ein bedeutender Mehrwert für die weltweite wissenschaftliche Forschung.
    Georg HohmannLeiter Deutsches Museum Digital
  • Fonds Finanz Maklerservice GmbH
    Fonds Finanz Maklerservice GmbH
    Plattformentwicklung | Prozess-Systeme | Hosting | Betreuung | Zertifikate | Website
    Norbert Porazik
    © Fonds Finanz Maklerservice GmbH
    Blueshoe ist unsere verlängerte Werkbank für Entwicklung, Wartung und Support unserer Weiterbildungs- und Zertifizierungsplattformen. Das Team hat sich gründlich in unsere Abläufe eingearbeitet, und wir freuen uns, Blueshoe als zuverlässigen Partner an unserer Seite zu haben.
    Norbert PorazikGründer und Geschäftsführer
  • Technische Universität Hamburg
    Technische Universität Hamburg
    Plattformentwicklung | Beratung | Prozess-Systeme | Hosting | Website
    Sören Schütt-Sayed
    Seit 2019 unterstützt uns die Blueshoe GmbH tatkräftig bei der Entwicklung und Weiterentwicklung des "Digital Learning Lab" und der "Digital Learning Tools". Dank ihrer Beratung konnten wir von Anfang an auf eine zukunftssichere, moderne technische Struktur setzen. Die Zusammenarbeit ist reibungslos, und wir fühlen uns rundum gut betreut. Und davon profitieren dann auch die Lehrkräfte in Hamburg.
    Sören Schütt-SayedOberingenieur
BLUESHOE GmbH
© 2024 BLUESHOE GmbH