å®ç¦ ç - stock.adobe.com
Optimieren Sie Workloads mit Kubernetes-Kapazitätsplanung
Ressourcenanforderungen in Kubernetes bedürfen laufender Änderungen. Richten Sie Kapazitätsplanung ein, um den Prozess zu vereinfachen und vorzubereiten. Wir erklären, wie es geht.
Sie verwalten ein Kubernetes-Cluster nur dann erfolgreich, wenn Sie Ihre Ressourcen optimal nutzen. Dafür ist es wichtig, dass Sie die richtigen CPU- und Speicheranforderungen festlegen. Ressourcenanforderungen und -Limits in Kubernetes sind entscheidend für die Leistung, Kosteneffizienz und Zuverlässigkeit dieser Open-Source-Plattform.
Ressourceneinstellungen für Kubernetes-Workloads müssen Sie jedoch laufend vornehmen – mit einem Mal ist es nicht getan. Das ist aufwändig und insbesondere für Anfänger schwer umzusetzen. Wir zeigen Ihnen daher die Best Practices für das Rightsizing von Workloads und erklären, wie sie den gesamten Prozess mit Kubernetes-Kapazitätsplanung optimieren.
Die richtigen Ressourcenanforderungen und -grenzen für Workloads in Kubernetes
Es gibt zwei verschiedene Arten von Ressourcenkonfigurationen für Container in Kubernetes: Anfragen (requests) und Limits. Ressourcenlimits, auch als Throttle bekannt, legen den Abschaltpunkt für einen Container fest, der über den vom Container belegten Speicher definiert ist. Ressourcenanfragen bestimmen die Menge an CPU oder Speicher, die einem Kubernetes-Container zugewiesen wird.
Overprovisioning in Kubernetes tritt auf, wenn die Werte zu hoch angesetzt sind und sich das negativ auf die Knoten auswirkt. Zu klein geplante Ressourcen bremsen auf der anderen Seite die Leistung der Anwendung aus. Sie müssen die Ressourcenanforderungen also gut abstimmen, um sicherzustellen, dass dem Cluster die richtige Menge an Ressourcen auf einer angemessenen Anzahl von Knoten zur Verfügung steht. Ob Sie Änderungen an Anfragen und Limits vornehmen müssen erkennen Sie am besten, indem Sie das Verhalten der Anwendung unter der Laufzeit überwachen.
Sorgen Sie dafür, dass Ressourcenlimits genau eingehalten werden, um Overprovisioning genauso zu vermeiden wie Underprovisioning. Unabhängig vom Arbeitsspeicherbedarf einer Anwendung prüft Kubernetes jede Anfrage, um den Pod auf dem am besten geeigneten Cluster zu platzieren.
Feste Limits versus Kubernetes Scheduler
Ressourcenbeschränkungen ohne zugehörigen Request berücksichtigt Kubernetes von vornherein, indem es das festgelegte Limit für Speicher- und CPU-Anfragen übernimmt. Mit diesem konservativen Ansatz haben sie die volle Kontrolle über Ihre Cluster, um Probleme wie Overprovisioning, Pod-Evakuierung, Speicherknappheit und CPU-Mangel zu vermeiden.
Mit dem Kubernetes-Scheduler bietet Kubernetes eine scheinbar einfachere, automatisierte Lösung. Wo ist dabei also das Problem? Sie verpassen eine gute Gelegenheit, um durch effizienteres Bin Packing Ihre Workloads zu optimieren. Taktiken, die es Ihnen erlauben, Limits und Requests optimal zu dimensionieren, sparen viel Geld und konsolidieren containerisierte Workloads. Als zusätzlicher Bonus ist das Ausreizen vorhandener Ressourcen ein wichtiger Faktor bei der Umweltbilanz Ihres Unternehmens.
Dabei gibt es jedoch eine große Herausforderung: Das Ganze funktioniert nur, wenn Sie die richtigen Metriken erheben und kennen. Dazu gehört die Festplatten- und Netzwerkauslastung.
Die Autoskalierungsfunktionen von Kubernetes fügen Ressourcen je nach Bedarf hinzu, oder entfernen sie. Das erreicht eine grundlegende Optimierung, eliminiert aber nicht das Problem mit dem Underprovisioning. Da sowohl das Rightsizing als auch das Sammeln von Metriken auf Containerebene stattfindet, startet der Kubernetes-Autoscaler Knoten, Bin-Packt sie und entfernt sie wieder, innerhalb der festgelegten Grenzen der Ressourcenanforderungen. Nun kennen Sie die Cluster-Nutzung in Ihrer Umgebung besser und können zudem die Autoscaling-Funktion aktivieren, sodass sie die zugrunde liegende Infrastruktur berücksichtigt.
Tipps für die Kapazitätsplanung von Kubernetes
Auch wenn es verlockend sein mag, vorrangig die teuersten (umfangreichsten) Anwendungen und Umgebungen zu optimieren, lassen sich die schnellsten Ergebnisse mit kleineren, weniger komplexen Systemen erzielen, die sich leicht lokalisieren lassen und die erfahrungsgemäß häufig mit Ressourcen überversorgt sind. Diese einfacheren Projekte bieten eine gute Gelegenheit für erste Tests.
Zu den bewährten Verfahren für die Kubernetes-Kapazitätsplanung gehören die folgenden:
- Gezieltes Overprovisioning mit großzügigen Limits oder Anforderungen bei der ersten Bereitstellung
- Verwenden mehrerer kleinerer Pods anstelle weniger größerer, um eine höhere Verfügbarkeit der Anwendungen zu erreichen
- Vermeiden von Ressourcenerschöpfung, Überlastung und langsame Bereitstellung, indem Sie die Anzahl der gleichzeitig laufenden Pods minimieren
- Regelmäßig Korrekturmaßnahmen nach Überprüfung der bisherigen Ressourcennutzung. Je mehr und bessere historische Daten Sie haben, desto effektiver wird das Optimieren der Workloads
- Schutz der Leistung durch vorherige Tests auf Rightsized-Instanzen
- Einrichten einer Feedbackschleife für Entwickler, um klare Kapazitätsanforderungen zu stellen
- Regelmäßiges Prüfen des aktuellen Plans anhand dieser Liste
Auch, wenn Ihre Ressourceneinstellungen zur Zeit das gewünschte Ergebnis erzielen, sollten Sie Ihre containerisierten Workloads regelmäßig neu überarbeiten. Finden Sie heraus, welche Tools Ihre DevOps-Teams benötigen, um die Transparenz zu verbessern, und behalten Sie die Konfiguration und die allgemeine Optimierung genau im Auge, da dies entscheidende Maßnahmen für mehr Sicherheit und Effizienz sind.