---
title: "Effiziente Betriebszeiten mit KEDA: Dynamisches Autoscaling für Kubernetes-Cluster"
description: "Kubernetes mit KEDA optimieren: 🚀 Dynamisches Autoscaling für Effizienz und weniger Kosten. ✅ Jetzt mehr erfahren!"
canonical_url: "https://www.blueshoe.de/blog/kubernetes-autoscaling-keda/"
---

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](/img/blogs/kubernetes-keda.svg)

<global-title :size="lg" className="mb-5">

Einführung in Kubernetes Autoscaling

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-button :color="blue" :label="Erfahre mehr, wie wir dir mit Docker und Kubernetes behilflich sein können" :url="/technologien/docker-kubernetes/" className="mb-6">



</global-button>

<global-title :size="lg" className="mb-5">

Was ist KEDA?

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-paragraph>

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.

</global-paragraph>

<global-title :size="lg" className="mb-5">

Cron-Scaler um Betriebszeiten zu definieren

</global-title>

<global-paragraph>

Um die Workloads eines Clusters außerhalb der Betriebszeiten auf 0 zu skalieren, nutzen wir den [Cron-Scaler](https://keda.sh/docs/2.16/scalers/cron/). 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.

</global-paragraph>

<global-paragraph className="mb-4">

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

</global-paragraph>

<blog-code className="mb-5">

```yaml
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'
```

</blog-code>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

Was passiert hier?

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-call-an-expert :bg="bg-bs-blue">
<template v-slot:buttonBlockTitle="">

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

</template>
</global-call-an-expert>

<global-title :size="lg" className="mb-5">

Wie hoch ist die Kostenersparnis?

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

Voraussetzung

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

Beispiel

</global-title>

<global-block className="ul-disk,mb-4">

- 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.

</global-block>

<global-title :size="lg" className="mb-5">

Fazit

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-paragraph>

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

</global-paragraph>

<global-title :size="lg" className="mb-5,mt-8">

Häufige Fragen

</global-title>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

**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.

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

KEDA bietet folgende Vorteile:

</global-paragraph>

<global-block className="ul-disk,mb-4">

- **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.

</global-block>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

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.

</global-paragraph>

<global-paragraph>

**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.

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

KEDA unterstützt über **70 Scalers**, darunter:

</global-paragraph>

<global-block className="ul-disk,mb-4">

- **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.

</global-block>

<global-paragraph>

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

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

**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.

</global-paragraph>

<global-title :size="md" className="mb-5" :color="text-bs-blue" :font="font-oswald" :tag="h3">

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

</global-title>

<global-paragraph>

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

</global-paragraph>

<global-block className="ul-disk,mb-4">

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

</global-block>

<global-paragraph>

**Einschränkungen:**

</global-paragraph>

<global-block className="ul-disk,mb-4">

- 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.

</global-block>

<global-paragraph className="mb-8">

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

</global-paragraph>

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
