Kubernetes v1.33: Effiziente Datenübertragung durch Streaming-Listenantworten

Erfahren Sie, wie Kubernetes v1.33 durch Streaming-Listenantworten die Stabilität großer Cluster verbessert.

Meta: ayedo Redaktion · 12.05.2025 · ⏳ 2 Minuten · Alle Blogs →

Managing Kubernetes-Cluster-Stabilität wird zunehmend kritisch, je größer Ihre Infrastruktur wird. Eine der herausforderndsten Aspekte beim Betrieb von großen Clustern war bisher die Handhabung von List-Anfragen, die umfangreiche Datensätze abrufen - eine häufige Operation, die unerwartete Auswirkungen auf die Stabilität Ihres Clusters haben kann.

Heute freut sich die Kubernetes-Community, eine bedeutende architektonische Verbesserung anzukündigen: Streaming-Codierung für List-Antworten.

Das Problem: Unnötiger Speicherverbrauch bei großen Ressourcen

Aktuelle API-Antwortencoder serialisieren eine gesamte Antwort in einen einzigen zusammenhängenden Speicherbereich und führen einen einzigen ResponseWriter.Write-Aufruf aus, um die Daten an den Client zu übertragen. Trotz der Fähigkeit von HTTP/2, Antworten in kleinere Frames für die Übertragung zu splitten, hält der zugrunde liegende HTTP-Server die vollständigen Antwortdaten weiterhin als einen einzigen Puffer. Selbst wenn einzelne Frames an den Client übertragen werden, kann der Speicher, der mit diesen Frames verbunden ist, nicht inkrementell freigegeben werden.

Wenn die Clustergröße wächst, kann der einzelne Antwortkörper beträchtlich sein - wie Hundert Megabyte groß. Bei großem Maßstab wird der aktuelle Ansatz besonders ineffizient, da er eine inkrementelle Freigabe des Speichers während der Übertragung verhindert. Man stelle sich vor, dass bei Netzwerküberlastung der große Antwortkörper für Dutzende von Sekunden oder sogar Minuten aktiv bleibt. Diese Einschränkung führt zu unnötig hohem und langanhaltendem Speicherverbrauch im kube-apiserver-Prozess. Wenn mehrere große List-Anfragen gleichzeitig auftreten, kann der kumulative Speicherverbrauch schnell ansteigen und möglicherweise zu einer Out-of-Memory (OOM)-Situation führen, die die Stabilität des Clusters gefährdet.

Das Paket encoding/json verwendet sync.Pool, um Speicherspeicher während der Serialisierung wiederzuverwenden. Obwohl dies für konsistente Workloads effizient ist, schafft dieser Mechanismus Herausforderungen bei sporadisch großen List-Antworten. Bei der Verarbeitung dieser großen Antworten expandieren die Speicherpools erheblich. Aufgrund des Designs von sync.Pool bleiben diese übergroßen Puffer jedoch nach der Verwendung reserviert. Nachfolgende kleine List-Anfragen nutzen weiterhin diese großen Speicherzuweisungen, was die Garbage Collection verhindert und einen dauerhaft hohen Speicherverbrauch im kube-apiserver aufrechterhält, selbst nachdem die ursprünglichen großen Antworten abgeschlossen sind.

Darüber hinaus sind Protocol Buffers nicht für die Verarbeitung großer Datensätze konzipiert. Sie eignen sich jedoch hervorragend für die Handhabung einzelner Nachrichten innerhalb eines großen Datensatzes. Dies verdeutlicht die Notwendigkeit für Streaming-basierte Ansätze, die große Sammlungen inkrementell verarbeiten und übertragen können, anstatt sie als monolithische Blöcke zu behandeln.

Als allgemeine Faustregel gilt: Wenn Sie mit Nachrichten arbeiten, die größer als ein Megabyte sind, wird es möglicherweise Zeit, eine alternative Strategie in Betracht zu ziehen. Von https://protobuf.dev/programming-guides/techniques/


Quelle: Kubernetes Blog

ayedo Alien Kubernetes Hat

Hosten Sie Ihre Apps bei ayedo

Profitieren Sie von skalierbarem App Hosting in Kubernetes, hochverfügbarem Ingress Loadbalancing und erstklassigem Support durch unser Plattform Team. Mit der ayedo Cloud können Sie sich wieder auf das konzentrieren, was Sie am besten können: Software entwickeln.

Jetzt ausprobieren →

Ähnliche Inhalte

Alle Blogs →



ayedo Redaktion · 08.06.2025 · ⏳ 3 Minuten

Neue Wege im KI-Management: Die Gateway API Inference Extension

Moderne generative KI- und große Sprachmodelle (LLMs) stellen Kubernetes vor einzigartige Herausforderungen im Datenverkehrsmanagement. Im Gegensatz zu typischen kurzlebigen, zustandslosen Webanfragen …

Lesen →

Neue Wege im KI-Management: Die Gateway API Inference Extension
ayedo Redaktion · 06.06.2025 · ⏳ 2 Minuten

Wie Sie sicherstellen, dass Ihr Sidecar-Container zuerst startet

Einführung in die Verwaltung von Sidecar-Containern in Kubernetes In der Welt von Kubernetes sind Sidecar-Container nützliche Helfer, die Funktionen erweitern oder zusätzliche Aufgaben für die …

Lesen →

Wie Sie sicherstellen, dass Ihr Sidecar-Container zuerst startet
ayedo Redaktion · 05.06.2025 · ⏳ 2 Minuten

Gateway API v1.3.0: Neue Funktionen für flexibles Request Mirroring und mehr!

Wir freuen uns, die allgemeine Verfügbarkeit der Gateway API v1.3.0 bekanntzugeben! Diese Version wurde am 24. April 2025 veröffentlicht und bringt spannende neue Funktionen mit sich. Was ändert sich …

Lesen →

Gateway API v1.3.0: Neue Funktionen für flexibles Request Mirroring und mehr!
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Application Performance sollte messbar sein — jederzeit, in Echtzeit

Wer Anwendungen produktiv betreibt, braucht keine schönen Dashboards, sondern harte Daten. Performance-Probleme entstehen nie dann, wenn Zeit für Debugging ist. Sie kommen genau dann, wenn Systeme …

Lesen →

Application Performance sollte messbar sein — jederzeit, in Echtzeit
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Warum betreibt ihr eure App eigentlich noch selbst?

Die Frage stellt sich immer wieder. Entwicklerteams liefern Features, optimieren Releases, bauen saubere Architekturen — und dann hängen sie trotzdem noch in der Infrastruktur. Kubernetes-Cluster …

Lesen →

Warum betreibt ihr eure App eigentlich noch selbst?

Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →


Noch Fragen? Melden Sie sich!

Unsere DevOps-Experten antworten in der Regel innerhalb einer Stunde.

Zu Gen-Z für E-Mail? Einfach mal Discord versuchen. Unter +49 800 000 3706 können Sie unter Angabe Ihrer Kontaktdaten auch einen Rückruf vereinbaren. Bitte beachten Sie, dass es keine Möglichkeit gibt, uns telefonisch direkt zu erreichen. Bitte gar nicht erst versuchen. Sollten Sie dennoch Interesse an synchroner Verfügbarkeit via Telefon haben, empfehlen wir Ihnen unseren Priority Support.