首页
/ Kube-OVN 中大规模子网策略路由添加性能问题分析

Kube-OVN 中大规模子网策略路由添加性能问题分析

2025-07-04 04:26:58作者:郦嵘贵Just

在 Kube-OVN 网络插件中,当集群规模较大时,添加策略路由的操作可能会遇到严重的性能问题。本文将深入分析这一问题的根源,并探讨可能的优化方向。

问题现象

在包含 10 个节点、260 个子网和约 5000 个端口的 Kube-OVN 集群中,用户观察到以下现象:

  1. 控制器重启后,"add policy route"操作执行极其缓慢,每条策略路由添加耗时 1-3 秒
  2. 工作队列深度下降缓慢,处理 100 个子网需要约 27 分钟
  3. 存在大量重复的策略路由添加操作
  4. 在添加策略路由和重置 ACL 之间存在约 10 秒的延迟

根本原因分析

策略路由检查机制

Kube-OVN 在添加每条策略路由前,都需要执行 listLogicalRouterPoliciesByFilter 操作来检查该路由是否已存在。在 v1.12.28 版本中,这一操作平均耗时约 600ms。

对于包含 10 个节点和 260 个子网的集群,理论上需要执行 260×10=2600 次策略路由添加操作。每次操作都需要检查所有现有策略路由,导致总检查次数达到 260×260×10=676,000 次,这是性能瓶颈的主要原因。

ACL 处理延迟

在子网创建过程中,ResetLogicalSwitchAclSuccess 事件与 ValidateLogicalSwitchSuccess 之间存在约 10 秒的延迟。这表明 ACL 处理可能也存在类似的性能问题,特别是在集群配置了大量安全组(约 300 个)的情况下。

缓存失效问题

虽然 Kube-OVN 使用了 whereCache 机制来缓存策略路由查询结果,但每次添加新策略路由都会使缓存失效,导致后续查询需要重新获取完整路由列表。

优化方案

策略路由查询优化

在较新版本(如 v1.14.0)中,通过优化 listLogicalRouterPoliciesByFilter 的实现,将查询时间从 600ms 降低到约 10ms。用户可以通过 cherry-pick 相关提交(如 a6f13a6 和 b76c044)到旧版本中获得这一改进。

批量处理机制

当前实现是逐个添加策略路由,可以考虑改为批量处理模式:

  1. 预先收集所有需要添加的策略路由
  2. 一次性查询现有路由状态
  3. 批量添加缺失的路由

ACL 处理优化

对于 ACL 处理延迟问题,可以考虑:

  1. 并行处理不同子网的 ACL
  2. 优化 ACL 查询机制,减少全量查询
  3. 实现增量更新机制,避免每次重置所有 ACL

总结

Kube-OVN 在大规模集群中的策略路由添加性能问题主要源于重复的全量查询操作。通过优化查询实现、引入批量处理机制和改进缓存策略,可以显著提升性能。对于生产环境中的大规模集群,建议升级到包含这些优化的新版本,或手动应用相关补丁。

未来,Kube-OVN 可以考虑实现更智能的路由管理机制,如基于事件触发的增量更新、更细粒度的缓存策略等,以进一步提升大规模集群下的网络配置性能。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
270
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
909
541
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
341
1.21 K
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
142
188
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
377
387
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
63
58
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.1 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
87
4