クラスターの安定性を管理することは、インフラストラクチャーの成長とともに重要になり、List 要求の大きな影響を受ける。Kubernetes コミュニティーは、List 応答における不要なメモリー消費を解消するために、ストリーミング エンコーディングを導入しました。現在の API 応答エンコーダーは、単一のバッファーに完全な応答データを保持し、伝送中のメモリーの逐次的な解放を防ぎます。これにより、大規模なスケールでは、高く長期的なメモリー消費が kube-apiserver プロセスで生じます。encoding/json パッケージや Protocol Buffers は、大規模なデータセットを処理する制限があり、ストリーミング ベースのアプローチを強調しています。新しいストリーミング エンコーダーは、各アイテムを個別に処理し、フレームやチャンクが伝送されるにつれてメモリーを逐次的に解放し、API サーバーのメモリー フットプリントを削減します。このアプローチは、メモリー消費を予測可能かつ管理可能にするため、kube-apiserver プロセスでのメモリー消費を削減します。ストリーミング エンコーダーは、バックワード互換性を保証し、オリジナルのエンコーダーとのバイト単位の整合性を保証し、すべての Kubernetes List タイプをクライアントサイドの変更なしにサポートします。ストリーミング コーディングの導入により、パフォーマンスの改善、スケーラビリティの向上、および安定性の向上が実現されました。ベンチマークの結果では、メモリー使用量が 20 倍改善され、70-80GB から 3GB に削減され、新しいストリーミング エンコーディング メカニズムの効果を示しています。
kubernetes.io
Kubernetes v1.33: Streaming List responses
Create attached notes ...
