Millionen an Dollar werden jährlich für Kubernetes-Ressourcen vergeudet

Der Sysdig-2023-Cloud-Native-Security- and Container-Usage-Report hat Aufschluss darüber gegeben, wie Unternehmen ihre Cloud-Umgebungen verwalten. Der Bericht basiert auf realen Kundendaten und zeigt den momentanen Status von „Cloud-Native“ im Jahr 2023, indem er die Daten von Milliarden von Containern zusammenfasst.

Der Bericht ruft Daten aus Cloud-Projekten in den folgenden Bereichen ab:

  • Anzahl der Container, die weniger CPU und Arbeitsspeicher nutzen als nötig,
  • Anzahl der Container, die keine CPU-Limits haben,
  • Gesamtzuweisung und geschätzte Verluste sowie
  • Begrenzungen und Anforderungen.

 

Limits und Requests von Kubernetes

Einfach ausgedrückt bieten Limits und Requests eine Möglichkeit, die maximale bzw. garantierte Menge einer Rechenressource für einen Container festzulegen. Aber sie sind mehr als das – sie zeigen auch die Absicht des Unternehmens für einen bestimmten Prozess an. Zudem lassen sich das Eviction-Tier-Level und die Quality of Service für die Pods definieren, auf denen diese Container laufen.

Die Sysdig-Studie zeigt Folgendes:

  • 49 % der Container haben keine Speicherbegrenzung festgelegt und
  • 59 % der Container haben keine CPU-Limits festgelegt.

Während das Einrichten von Speicherlimits negative Nebeneffekte haben kann, ist es wichtig, CPU-Limits festzulegen, um ein Aushungern von Prozessen oder bestimmte Container mit drastischen CPU-Verbrauchsspitzen zu vermeiden.

59 % Container ohne CPU-Limit: Die Sysdig-Studie ergab, dass 59 % der Container überhaupt keine CPU-Limits gesetzt hatten. Normalerweise könnte das Hinzufügen von CPU-Limits zu Throttling führen, aber der Bericht zeigt auch, dass im Durchschnitt 69 % der gekauften CPU ungenutzt waren, was darauf hindeutet, dass keine Kapazitätsplanung stattfand.

49 % Container ohne Speicherbegrenzung: Bei fast der Hälfte der Container gab es keine Speicherbegrenzung. Dies ist ein besonderer Fall, da das Hinzufügen einer Speicherbegrenzung zu OOM-Fehlern führen kann.

 

Kubernetes-Over-Allocation

Cloud-Anbieter bieten eine Vielzahl von Optionen, um Anwendungen mit nur einem Klick auszuführen, was eine gute Möglichkeit ist, die Überwachung zu starten. Allerdings neigen Cloud-native Unternehmen dazu, Ressourcen zuzuteilen, nur um eine Überlastung zu vermeiden, was zu astronomischen Kosten führen kann.

Warum ist das so?

  • Drang zur schnellen Skalierung,
  • mangelnde Transparenz des Ressourcenverbrauchs,
  • mandantenübergreifende Skalierung,
  • mangelnde Kubernetes-Kenntnisse oder auch
  • mangelnde Kapazitätsplanung.

 

Anzahl der Knotenpunkte: Da die CPU die teuerste Ressource in einer Cloud-Instanz ist, geben Unternehmen möglicherweise zu viel Geld für etwas aus, das sie nie nutzen werden.

Anhand der durchschnittlichen Kosten für die AWS-Preisgestaltung für Knoten auf der Grundlage von CPU und Arbeitsspeicher lassen sich die durchschnittlichen Einsparungen für Unternehmen berechnen, die diese Probleme angehen. Konkret zeigte der Sysdig- Bericht, dass Unternehmen mit mehr als 1.000 Knoten ihre verschwendeten Ressourcen um 10 Millionen Dollar pro Jahr reduzieren könnten.

CPU-Überbeanspruchung: Wenn die festgelegten Grenzen höher sind als die tatsächliche CPU, werden Kubernetes-Knoten angezeigt:

Zugewiesene Ressourcen: (Die Gesamtlimits können über 100 Prozent liegen, d. h. sie sind überlastet.) Dies bedeutet, dass Kubernetes einige Prozesse drosselt, um eine höhere CPU-Auslastung zu erreichen.

 

Strategien zur Kostensenkung von Containern

Kapazitätsplanung: Durch den Einsatz von Anwendungen zur Nachverfolgung der Ressourcennutzung und durch die Durchführung einer Kapazitätsplanung können Unternehmen diese Kosten mit einem klaren Investitions-/Rendite-Nettogewinn mindern. Sowohl Limits als auch Requests sind nützliche Werkzeuge, um die Nutzung einzuschränken, aber sie können mühsam sein, da sie zu Pod-Räumungen oder Überbeanspruchungen führen können. Limitranges sind ein nützliches Werkzeug, um automatisch einen Wertebereich für Limits und Requests für alle Container innerhalb eines Namespaces zuzuweisen.

Automatische Skalierung: Sowohl die vertikale Autoskalierung (Vergrößerung der Ressourcen bei Bedarf) als auch die horizontale Autoskalierung (Vergrößerung oder Verkleinerung der Anzahl der Pods auf der Grundlage der Auslastung) können zur dynamischen Anpassung an die aktuellen Anforderungen der Cloud-nativen Lösung verwendet werden.

Resource-Quota: Unternehmen mit mandantenfähigen Lösungen können auf das Problem stoßen, dass einige  Projekte in Bezug auf die Ressourcen anspruchsvoller sind als andere. Aus diesem Grund kann die Zuweisung der gleichen Ressourcen zu einer Überbeanspruchung führen. Aus diesem Grund sollten Resource-Quotas verwendet werden, um eine maximale Menge einer Ressource festzulegen, die für alle Prozesse in einem Namensraum verbraucht werden darf.

 

Zusammenfassung

In den letzten Jahren hat die Zahl der Unternehmen, die in Cloud-Lösungen investieren, rapide zugenommen. Doch mit großer Macht kommt auch große Verantwortung.

Im Allgemeinen wollen Entwickler genügend Ressourcen zuweisen, um keine Probleme mit der Sättigung zu bekommen. Andererseits führt eine übermäßige Zuteilung zu massiven Ausgaben für ungenutzte Ressourcen. Daher sind Kapazitätsplanung, automatische Skalierung und Kostentransparenz die besten Werkzeuge, um die Kontrolle über Cloud-nativen Ausgaben zurückzugewinnen.

Info: Weitere Informationen finden sich im Sysdig Container Usage Report.

Von Javier Martinez, DevOps Content Engineer #Sysdig