Warum ist Nachhaltigkeit in Kubernetes wichtig?
Cloud-native Anwendungen sind oft rund um die Uhr in Betrieb, auch wenn sie nicht benötigt werden. Besonders in Entwicklungs- und Staging-Umgebungen laufen viele Ressourcen ungenutzt weiter – ein erheblicher Energieverlust.
Die Cloud Native Computing Foundation (CNCF) hat das Thema Umweltschutz und Nachhaltigkeit auf der KubeCon + CloudNativeCon EU 2023 in den Fokus gerückt. Dort wurden verschiedene Projekte vorgestellt, die den CO₂-Ausstoß von Kubernetes-Clustern reduzieren sollen.
kube-green ist eines dieser Projekte. Es ermöglicht das automatische Herunterfahren nicht genutzter Workloads, um den Energieverbrauch zu senken und nachhaltiger mit Cloud-Ressourcen umzugehen.
Nachhaltige Ressourcenverwaltung mit kube-green
kube-green ist ein Kubernetes-Operator, der dabei hilft, nicht genutzte Ressourcen automatisch herunterzufahren. Dazu gehören Pods, Deployments und CronJobs, die zu bestimmten Zeiten oder basierend auf Regeln gestoppt und später wieder aktiviert werden können.
Automatische Skalierung von Deployments und CronJobs
Aktuell unterstützt kube-green folgende Kubernetes-Ressourcen:
- Deployments: Replikas werden auf 0 gesetzt, wenn der Workload nicht benötigt wird.
- CronJobs: Sie werden vorübergehend deaktiviert, um unnötige CPU- und Speicherlast zu vermeiden.
Dadurch lassen sich erhebliche Ressourcen einsparen, insbesondere in Entwicklungsumgebungen.
Zeitgesteuertes Abschalten und Reaktivieren von Pods
Mit kube-green lassen sich Schlaf- und Aufwachzeiten für Workloads definieren. Das erfolgt über eine benutzerdefinierte Kubernetes-Ressource namens SleepInfo.
Beispiel für eine SleepInfo-Konfiguration:
apiVersion: kube-green.com/v1alpha1
kind: SleepInfo
metadata:
name: sleep-config
namespace: dev-environment
spec:
weekdays: [1, 2, 3, 4, 5] # Montag bis Freitag
sleepAt: "20:00" # Workloads um 20:00 Uhr herunterfahren
wakeUpAt: "08:00" # Workloads um 08:00 Uhr starten
timezone: "Europe/Berlin"
excludeRef:
- name: "critical-service"
kind: Deployment
Emissionsreduktion durch optimierte Ressourcennutzung
Durch das gezielte Abschalten von Ressourcen lassen sich CO₂-Emissionen reduzieren. Laut Berechnungen kann ein einzelner Kubernetes-Knoten pro Jahr 160 kg CO₂ erzeugen. kube-green kann diesen Wert um bis zu 30 % senken, je nach Clustergröße und Nutzungsmuster.
Installation und erste Schritte mit kube-green
Um kube-green in einem Kubernetes-Cluster zu installieren, sind folgende Schritte nötig:
1. Cert-Manager installieren Bevor kube-green genutzt werden kann, muss der Cert-Manager installiert werden:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
2. kube-green installieren
kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml
3. Funktion prüfen
kubectl get pods -n kube-green
Nach der erfolgreichen Installation können SleepInfo-Ressourcen erstellt werden.
Prometheus-Metriken und CO₂-Einsparungen messen
kube-green stellt Metriken für Prometheus bereit. Damit lässt sich verfolgen, welche Einsparungen durch das Tool erzielt wurden.
Beispiel einer Metrik für aktivierte SleepInfo-Ressourcen:
kube_green_sleepinfo_active{namespace="dev-environment"} 1
Optimale Konfiguration für maximale Effizienz
- Entwicklungsumgebungen: Schlafzeiten außerhalb der Arbeitszeiten definieren.
- Staging-Umgebungen: Nachtabschaltung aktivieren, falls keine Tests laufen.
- Produktion: Nur nicht-kritische Services mit kube-green verwalten.
Technische Limitierungen und potenzielle Herausforderungen
- Stateful Services sollten nicht abgeschaltet werden.
- Externe Abhängigkeiten können nach einem Wake-up Verzögerungen verursachen.
- Nicht alle Kubernetes-Ressourcen werden aktuell unterstützt.
Adoption und Einsatzbeispiele aus der Praxis
Mehrere Unternehmen und Organisationen setzen bereits auf kube-green, um ihre Cloud-Ressourcen effizienter zu nutzen. Die CNCF fördert das Projekt aktiv, und es gibt erste Produktiv-Einsätze in großen Clustern.
Integration mit KEDA und weiteren Green Cloud Tools
kube-green lässt sich mit anderen Nachhaltigkeits-Tools kombinieren, darunter:
- KEDA: Dynamische Skalierung basierend auf Event-getriebenen Workloads.
- Kepler: Energieverbrauchsanalyse für Kubernetes-Cluster.
- Cloud Carbon Footprint: Berechnung des gesamten CO₂-Ausstoßes einer Cloud-Infrastruktur.
Fazit
kube-green bietet eine einfache, aber effektive Lösung, um den Energieverbrauch von Kubernetes-Clustern zu senken. Durch automatisches Abschalten nicht genutzter Ressourcen lassen sich Kosten sparen und die Umwelt schonen. Das Tool ist besonders für Entwicklungs- und Testumgebungen geeignet, in denen viele Pods außerhalb der Arbeitszeiten unnötig laufen.
