RSS-Kubernetes-Blog

Kubernetes v1.33: Streaming-List-Antworten

Die Verwaltung der Stabilität von Kubernetes-Clustern ist entscheidend, wenn die Infrastruktur wächst, und das Handling großer Listenanforderungen kann die Stabilität des Clusters beeinträchtigen. Die Kubernetes-Community hat die Streaming-Codierung für Listenantworten eingeführt, um das Problem des unnötigen Speicherverbrauchs bei großen Ressourcen anzugehen. Aktuelle API-Antwortencodierer speichern die gesamte Antwortdaten als einen einzelnen Puffer, was die inkrementelle Freigabe von Speicher während der Übertragung verhindert. Dieser Ansatz wird ineffizient bei großem Maßstab, was zu hohem und langanhaltendem Speicherverbrauch im kube-apiserver-Prozess führt. Die encoding/json-Paket und Protocol Buffers haben Einschränkungen bei der Verarbeitung großer Datensätze, was die Notwendigkeit von streaming-basierten Ansätzen hervorhebt Streaming-Encoder verarbeitet und überträgt jedes Element einzeln, was es ermöglicht, den Speicher schrittweise freizugeben, während Frames oder Chunks übertragen werden. Dieser Ansatz reduziert den Speicheraufwand, der vom API-Server benötigt wird, und hält den Speicherverbrauch vorhersehbar und handhabbar. Der Streaming-Encoder ist rückwärts kompatibel, garantierend byte-für-byte-Konsistenz mit dem ursprünglichen Encoder, und unterstützt alle Kubernetes-Listentypen ohne clientseitige Änderungen erforderlich. Die Einführung der Streaming-Codierung hat zu signifikanten Leistungsverbesserungen geführt, einschließlich reduziertem Speicherverbrauch, verbesserter Skalierbarkeit und erhöhter Stabilität. Benchmark-Ergebnisse haben eine 20-fache Verbesserung des Speicherverbrauchs gezeigt, reduziert von 70-80 GB auf 3 GB, was die Wirksamkeit des neuen Streaming-Codiermechanismus demonstriert.
favicon
kubernetes.io
Kubernetes v1.33: Streaming List responses
Bild zum Artikel: Kubernetes v1.33: Streaming-List-Antworten