通过API流式传输提升Kubernetes API服务器效率

通过API流式传输提升Kubernetes API服务器效率

💡 原文英文,约1100词,阅读约需4分钟。
📝

内容提要

Kubernetes 1.32引入流式API列表请求,显著提升了kube-apiserver的内存效率。传统列表请求会迅速耗尽内存,而流式请求通过逐个传输数据,保持恒定的内存开销。测试表明,启用后内存使用量从20GB降至约2GB,增强了系统稳定性,尤其在处理大量对象时。

🎯

关键要点

  • Kubernetes 1.32引入流式API列表请求,显著提升了kube-apiserver的内存效率。
  • 传统列表请求会迅速耗尽内存,而流式请求通过逐个传输数据,保持恒定的内存开销。
  • 启用流式请求后,内存使用量从20GB降至约2GB,增强了系统稳定性。
  • kube-apiserver在处理列表请求时,需先从数据库获取数据并进行反序列化,导致临时内存消耗大。
  • API优先级和公平性无法有效保护内存,可能导致kube-apiserver因内存耗尽而崩溃。
  • 流式请求通过watch缓存逐个传输数据,显著降低了临时内存使用。
  • 在自动化性能测试中,启用watch列表功能后,kube-apiserver的内存消耗稳定在约2GB。
  • 建议用户升级到Kubernetes 1.32,并使用watch列表以优化内存使用。
  • kube-controller-manager在Kubernetes 1.32中默认启用该功能,未来将扩展到其他核心组件。
  • 合成测试显示,仅需16个informers便可导致内存耗尽,强调了流式请求的重要性。
➡️

继续阅读