Keda steht für Kubernetes-based event-driven autoscaling

Ereignisgesteuerte Skalierung von Container-Workloads

| Autor: Ulrike Ostler

Vereinfachtes Skalieren mithilfe des Open-Source-Projekts Kubernetes-based event-driven autoscaling, Keda, wurde von Microsoft initiiert.
Vereinfachtes Skalieren mithilfe des Open-Source-Projekts Kubernetes-based event-driven autoscaling, Keda, wurde von Microsoft initiiert. (Bild: Jeff Hollan)

Kennen Sie Keda, Kubernetes-based event-driven autoscaling? Das ist ein von Microsoft initiiertes Open-Source-Projekt, das darauf abzielt, ereignisgesteuerte Skalierung für Container-Workloads bereitzustellen nun die Version 1.0 erreicht hat. Damit ist die Komponente bereit für den produktiven Einsatz.

Wie Jeff Hollan, Principal PM Manager, Azure Serverless, in seinem Blog schreibt, sind „ereignisgesteuerte Anwendungen ein Schlüsselmuster“ für Cloud-natives Computing, einschließlich serverloser Berechnungen wie „Azure Functions“. Die Anwendung ´reagiert` auf verschiedene Geschäfts- oder Systemereignisse. So kann ein Ereignis „neuer Abonnent“ einen Code auslösen, der eine Begrüßungs-E-Mail sendet und einen Eintrag in einem CRM-System erstellt.

Genauso wichtig wie der Code selbst ist die Skalierung dieser Funktionen. Die Open-Source-Komponente Keda kann in einem Kubernetes-Cluster ausgeführt werden, um ereignisgesteuerte Autoskalierung für jeden Container bereitzustellen.

Kubernetes bietet eine leistungsstarke Container-Orchestrierungsplattform, skaliert aber standardmäßig nur basierend auf Systemmetriken wie CPU und Speicher, erläutert Hollan. Somit kann es zu erheblichen Verzögerungen in der Reaktionsfähigkeit eines Systems auf Ereignisse kommen.

Im Blog von Jeff Hollan gibt es ein kleines Video zur Funktionsweise von Keda.
Im Blog von Jeff Hollan gibt es ein kleines Video zur Funktionsweise von Keda. (Bild: Jeff Hollan)

Er gibt ein Beispiel: Eine Nachricht landet in einer Nachrichtenwarteschlange. Es könnten Tausende von Warteschlangennachrichten gesendet werden und warten auf die Verarbeitung, aber Kubernetes weiß nichts darüber, wie viele Ereignisse passieren. Kubernetes registriert zwar, dass die CPU- und der Speicherauslastung ansteigt, doch wird es einige Zeit dauern, bis das System reagieren kann.

Mit Keda lässt sich die Situation verbessern, indem die Autoskalierung von Kubernetes mit Metriken über die Häufigkeit von Ereignissen angereichert wird. In diesem Beispiel: Ist Keda installiert, kann Kubernetes wissen, wie viele Nachrichten ankommen, und diese Informationen verwenden, um eine App zu skalieren, noch bevor die CPU-Auslastung zu steigen beginnt.

Das funktioniert auch umgekehrt. Reagiert eine Anwendung auf ein Ereignis, das gar nicht stattfindet, teilt Keda Kubernetes mit, dass auf Null reduziert werden kann, um zu verhindern, dass die Applikation trotz ihres Idle-Zustands CPU-Power braucht.

Das Keda-Logo
Das Keda-Logo (Bild: Keda)

Bei der Entwicklung beteiligt waren etwa die Anwenderunternehmen Swiss Re Asset Management und Cyclo Media. Tom van de Meent, leitender Architekt von Cyclo Media, sagt: „Bei Cyclo Media haben wir Azure Functions mit Azure Storage Queues in Kubernetes betrieben. Keda war hilfreich beim Hinzufügen einer dynamischen Skalierung, um diese Workloads zu bewältigen.“

Diverse Ereignisquellen

Derzeit unterstützt Keda 13 Ereignisquellen, darunter „Azure Queues“, „Azure Event Hubs“, „AWS SQS“, „Google Cloud Pub Sub“, „RabbitMQ“, „Nats Streaming“ und „Kafka“. Vor Kurzem haben die Projektbeteiligten, etwa auch Red Hat, Keda derr Cloud Native Computing Foundation vorgestellt. Er könne sich verstellen, so Hollan, Keda der Foundation als Sandbox-Projekt zu spenden.

Denn im Prinzip funktioniert Keda mit jedem beliebigen Container. Bezogen auf die Micrsosoft-Angebote ist es vermutlich interessant die Komponente mit der Open-Source-Laufzeitumgebung „Azure Functions“ zu kombinieren, um zusätzliche serverlose Funktionen innerhalb von Kubernetes zu ermöglichen. Azure Functions bietet ein Programmiermodell, das überall ausgeführt werden kann: in einem Container, der vor Ort läuft, vollständig in Azure verwaltet wird oder in jedem Kubernetes-Cluster.

Mit einem integrierten „Azure Functions-Tooling“ lässt sich jede Azure Function-App für Kubernetes und Keda für ereignisgesteuerte Skalierung einsetzen. Außerdem kann Keda an der Seite von „Virtual Kubelet“ und „Azure Kubernetes Service Virtual Nodes“ laufen.

Mitarbeit von Red Hat

Red Hat gehört zu den starken Keda-Unterstützern. Erklärtes Ziel ist es, Keda so zu gestalten, dass es einfach zu konsumieren und zu installieren ist. Nutzer sollten keine Experte sein müssen und sich auf ihre Anwendung konzentrieren können und nicht auf Infrastrukturprobleme.

Red Hat arbeitet am Aufbau eines „Kubernetes-Operator“ für Keda. Dafür wird ein Software Development Kit erstellt mit integrierter Unterstützung für Operatoren in „Openshift 4“. Durch Keda lassen sich Azure Functions auf der Plattform aktivieren, etwa eine Vorschau für Entwickler auf OpenShift mit einer hybriden FaaS-Lösung. Diese kann Ereignisse aus den Azure Services nutzen, aber auch zusätzliche Ereignisquellen.

Was meinen Sie zu diesem Thema?

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46266899 / Anwendungen)