---
title: "Kostenoptimierung eines Azure Kubernetes Clusters"
description: "Azure Kubernetes: Spare 50% deiner Kosten mit Auto-Scaling & smarter Ressourcenverwaltung! Jetzt Best Practices entdecken."
canonical_url: "https://www.blueshoe.de/blog/azure-kubernetes-kostenoptimierung/"
---

Cloud-Ressourcen sind mächtig und praktisch, aber teuer – besonders Kubernetes-Cluster. In diesem Blogpost zeigen wir, wie wir in einem Bestandsprojekt die Azure Kubernetes Service Kostenoptimierung erfolgreich umgesetzt haben. Dabei stellen wir Strategien, Tools und Best Practices vor, die geholfen haben, AKS Kosten zu reduzieren, ohne die Performance zu beeinträchtigen.

![Kostenoptimierung eines Azure Kubernetes Clusters](/img/blog/aks.png)

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

Ausgangslage

</global-title>

<global-paragraph>

Das Projekt wird vollständig in der Azure Cloud betrieben und nutzt zwei AKS Kubernetes Cluster: ein Staging- und ein Produktiv-System. Diese generieren Cloud-Ressourcen wie virtuelle Maschinen, Festplatten, Load Balancer und IP-Adressen.

</global-paragraph>

<global-paragraph>

Zusätzlich kommen diverse Azure-Services zum Einsatz, darunter eine Managed Database, Storage für Media-Daten und eine Redis-Instanz. Vor der Optimierung lagen die Kosten bei ca. 100 € pro Tag.

</global-paragraph>

![Vorher](/img/blog/250212_azure-prior.png)

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

Analyse mit Azure Cost Management

</global-title>

<global-paragraph>

Der erste Schritt zur Kubernetes Cluster Kostenmanagement war eine Analyse mit Azure Cost Management für Kubernetes. Das Tool bietet detaillierte Einblicke, welche Services wie viel kosten - ein sehr guten Anhaltspunkt, bei welchen Services es lohnend sein kann genauer hinzuschauen.

</global-paragraph>

<global-paragraph>

Direkt fiel uns eine abgeschaltete, aber noch existierende VM auf. Diese hat zwar wenig Kosten verursacht, war aber dennoch unnötig und konnte entfernt werden.

</global-paragraph>

<global-paragraph>

Die größten Kostentreiber waren jedoch die virtuellen Maschinen – insbesondere die Node Pools der beiden AKS Cluster. Ein detaillierter Blick auf die Kubernetes Ressourcenoptimierung zeigte, dass die Anzahl der Nodes nicht optimal auf den tatsächlichen Bedarf abgestimmt war. Auch hier unterstützt Azure – nämlich mit einem Monitoring der CPU- und der Memory-Auslastung.

</global-paragraph>

<global-paragraph>

Auch Azure Log Analytics erwies sich als unerwartet hoher Kostenpunkt. Dieser war für den Production Cluster konfiguriert. Sämtliche Logs der Kubernetes-Ressourcen wurden langfristig gespeichert, ohne aktiv genutzt zu werden.

</global-paragraph>

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

Getroffene Maßnahmen

</global-title>

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

Node Pools optimieren

</global-title>

<global-paragraph>

Basierend auf diesen Erkenntnissen haben wir eine Reihe gezielter Optimierungsmaßnahmen umgesetzt.

</global-paragraph>

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

- Der **Staging-Cluster** wurde von 3 auf 1-3 Nodes umgestellt – mit Auto-Scaling. Damit laufen in der Regel nur noch 2 Nodes.
- Der **Production-Cluster** nutzt zwei Nodepools: System-Mode (fix auf 2 Nodes) und User-Mode (Auto-Scaling auf 1-6 Nodes). Das spart Ressourcen und passt sich dynamisch der Last an.

</global-block>

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

Virtuelle Maschinen anpassen

</global-title>

<global-paragraph>

Eine zu groß dimensionierte VM für die Managed Database wurde verkleinert. Dank Azure Cost Management für Kubernetes war klar, dass die vorhandene Rechenleistung überdimensioniert war. Die Umstellung erfolgte reibungslos und kann jederzeit rückgängig gemacht werden, falls der Bedarf steigt.

</global-paragraph>

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

Log Analytics deaktivieren

</global-title>

<global-paragraph>

Die hohen Kosten von Azure Log Analytics standen in keinem Verhältnis zur tatsächlichen Nutzung. Die Deaktivierung führte zu einer erheblichen Einsparung, die sich erst nach einigen Wochen vollständig bemerkbar machte, da Logs bis zu 90 Tage gespeichert wurden.

</global-paragraph>

![Log Analytics deaktivieren](/img/blog/250212_log-analytics.png)

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

Unnötige Ressourcen entfernen

</global-title>

<global-paragraph>

Eine ungenutzte VM eines alten GitLab Runners wurde gelöscht. Zwar verursachte sie nur ca. 10 € pro Monat, aber solche "vergessenen" Ressourcen summieren sich über die Zeit.

</global-paragraph>

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

Betriebszeiten mit KEDA optimieren

</global-title>

<global-paragraph>

Beide AKS Cluster werden nur werktags während der Arbeitszeiten benötigt. Mittels [KEDA Auto-Scaling](/blog/kubernetes-autoscaling-keda/) wurden Betriebszeiten definiert, sodass Anwendungen außerhalb dieser Zeiten automatisch herunterskaliert werden. Dies senkt die AKS Kosten zusätzlich, da weniger Nodes aktiv sind.

</global-paragraph>

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

Ergebnis: Über 50% Kostenreduktion

</global-title>

<global-paragraph>

Es hat eine gewisse Zeit gedauert, bis das volle Ausmaß der Kostenersparnis ersichtlich war. Aber die Optimierungsmaßnahmen haben sich gelohnt. Die Betriebskosten sanken von ca. 100 € auf **45 € pro Tag** – eine Einsparung von mehr als 50%!

</global-paragraph>

<global-paragraph>

Einige Maßnahmen, wie der Node-Autoscaler, hätten früher umgesetzt werden können. Andere, wie das Kubernetes Cluster Kostenmanagement durch Betriebszeiten-Optimierung, erforderten mehr Planung, zahlen sich aber langfristig aus.

</global-paragraph>

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

Lessons Learned

</global-title>

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

✔ Regelmäßige Kostenanalyse lohnt sich – ohne sie hätten wir unnötige Ressourcen nicht entdeckt.<br />


✔ Auto-Scaling konsequent nutzen – feste Node-Größen  ist oft ineffizient.<br />


✔ Logging hinterfragen – nicht jeder Log-Service ist notwendig oder wirtschaftlich.

</global-block>

<global-paragraph>

**Mehr über Kubernetes & Kostenoptimierung erfahren?**

</global-paragraph>

<global-button :color="blue" :label="Erfahre mehr über unsere Kubernetes-Entwicklungsdienste" :url="/technologien/docker-kubernetes/" className="mb-6">



</global-button>

<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. Wie kann ich die Kosten meines Azure Kubernetes Clusters senken?

</global-title>

<global-paragraph>

Du kannst die AKS Kosten reduzieren, indem du Auto-Scaling aktivierst, ungenutzte Ressourcen entfernst, Log-Services optimierst und Betriebszeiten mit [KEDA](/blog/kubernetes-autoscaling-keda/) anpasst.

</global-paragraph>

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

2. Welche Tools helfen bei der Azure Kubernetes Kostenoptimierung?

</global-title>

<global-paragraph>

Das Azure Cost Management für Kubernetes bietet detaillierte Analysen. Zusätzlich helfen der Kubernetes Autoscaler und KEDA beim dynamischen Skalieren der Nodes.

</global-paragraph>

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

3. Warum ist Auto-Scaling wichtig für die Kostenoptimierung in AKS?

</global-title>

<global-paragraph>

Auto-Scaling passt die Anzahl der Nodes an den tatsächlichen Bedarf an und verhindert Überprovisionierung – eine effektive Maßnahme zur Kubernetes Ressourcenoptimierung.

</global-paragraph>

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

4. Wie wirkt sich die Deaktivierung von Azure Log Analytics auf die Kosten aus?

</global-title>

<global-paragraph>

Log Analytics kann hohe laufende Kosten verursachen. Falls du die Logs nicht aktiv nutzt, kann die Deaktivierung zu einer deutlichen Einsparung führen.

</global-paragraph>

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

5. Gibt es eine Möglichkeit, Kubernetes Cluster außerhalb der Arbeitszeiten zu reduzieren?

</global-title>

<global-paragraph>

Ja! Mit [KEDA Auto-Scaling](/blog/kubernetes-autoscaling-keda/) kannst du deine Cluster außerhalb der Geschäftszeiten automatisch herunterskalieren und so Kosten sparen.

</global-paragraph>

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

6. Wie oft sollte ich mein Azure Kubernetes Kostenmanagement überprüfen?

</global-title>

<global-paragraph>

Eine monatliche Analyse mit Azure Cost Management hilft, ineffiziente Ressourcen frühzeitig zu erkennen und Kosten langfristig zu senken.

</global-paragraph>

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

7. Welche Node-Pool-Strategie ist am kosteneffizientesten für AKS?

</global-title>

<global-paragraph>

Eine Kombination aus System-Mode- und User-Mode-Pools mit Auto-Scaling ist ideal. System-Mode sollte stabil bleiben, während User-Mode dynamisch skaliert.

</global-paragraph>

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

8. Wann lohnt sich die Nutzung von Spot-Instances in AKS?

</global-title>

<global-paragraph>

Spot-Instances sind günstiger, aber nicht immer verfügbar. Sie eignen sich für nicht-kritische Workloads mit flexiblem Ausführungszeitpunkt.

</global-paragraph>

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

9. Kann ich Kosten sparen, indem ich auf einen anderen Cloud-Anbieter wechsle?

</global-title>

<global-paragraph>

Ja, Azure ist nicht immer die günstigste Option. Es lohnt sich, Alternativen wie Linode oder Hetzner zu prüfen, falls deine Anforderungen es erlauben.

</global-paragraph>

## Sitemap

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