Blog Kubernetes RSS

Kubernetes v1.33 : Réponses de listes en flux

La gestion de la stabilité du cluster Kubernetes est cruciale lorsque l'infrastructure grandit, et la gestion des demandes de liste importantes peut impacter la stabilité du cluster. La communauté Kubernetes a introduit l'encodage en flux pour les réponses de liste pour résoudre le problème de consommation de mémoire inutile avec les ressources importantes. Les encodeurs de réponse API actuels conservent les données de réponse complète dans un tampon unique, empêchant la libération de mémoire incrémentale pendant la transmission. Cette approche devient inefficace à grande échelle, entraînant une consommation de mémoire élevée et prolongée dans le processus kube-apiserver. Les packages encoding/json et Protocol Buffers ont des limitations pour gérer les jeux de données importants, soulignant la nécessité d'approches basées sur le flux. L'encodeur de flux nouveau traite et transmet chaque élément individuellement, permettant la libération progressive de la mémoire à mesure que les trames ou les blocs sont transmis. Cette approche réduit l'empreinte mémoire requise par le serveur API et maintient la consommation de mémoire prévisible et gérable. L'encodeur de flux est conçu pour être compatible avec les versions précédentes, garantissant une cohérence byte-for-byte avec l'encodeur original, et prend en charge tous les types de liste sans nécessiter de modifications côté client. L'introduction de l'encodage en flux a entraîné des gains de performance significatifs, notamment une réduction de la consommation de mémoire, une amélioration de la scalabilité et une augmentation de la stabilité. Les résultats des benchmarks ont montré une amélioration de 20 fois dans l'utilisation de la mémoire, la réduisant de 70-80 Go à 3 Go, démontrant l'efficacité du nouveau mécanisme d'encodage en flux.
kubernetes.io
Kubernetes v1.33: Streaming List responses
Create attached notes ...