Rancher UI 性能优化
本文永久链接: https://www.xtplayer.cn/rancher/rancher-ui-performance-optimization/
ui-sql-cache 是 Rancher 中一项通过 SQLite 数据库在服务端缓存 Kubernetes 资源数据,以实现服务端分页、排序和过滤的关键性能优化功能(代号为“Vai”项目)。
它旨在解决当集群资源数量巨大时(如数万个 ConfigMap),传统前端拉取全量数据导致浏览器内存溢出、界面卡顿及 API Server 负载过高的问题。
核心工作原理
开启后,Rancher 的内部 API 组件 Steve 会为资源类型创建 Informer,并将 Kubernetes 对象持久化到 SQLite 数据库中。
- 数据缓存:首次请求某类资源时,从 Kubernetes API Server 获取数据并存入 SQLite,后续通过 Watch 保持同步更新。
- 服务端处理:UI 请求列表时,Steve 会将请求(含分页、排序、过滤参数)直接转换为 SQL 查询在服务端完成,仅返回当前页面需要的数据。
- 减轻负载:极大减少直接对 Kubernetes API Server 的 LIST 请求,有效降低其压力。
如何开启与关闭
功能开关位于全局设置中的 Feature Flags 内。
- 开启:点击右上角 ☰ > Global Settings > Feature Flags,找到
ui-sql-cache并激活。 - 重启:激活后 Rancher Server 和所有下游集群的 Agent 会自动重启。
- 生效:重启完成后,刷新浏览器页面即可生效。
- 关闭:在上述路径中选择停用,等待重启并刷新页面即可回退。
注意:在 Rancher 2.11 及更早版本中,Vai 被视为实验性功能,默认处于关闭状态。随着 Rancher 2.12\2.13 的发布,Vai 已达到生产就绪状态,并默认启用。
重要考量与限制
启用前请务必留意以下几点:
- 磁盘空间:SQLite 缓存文件存储在 Pod 的文件系统中,会占用临时存储(Ephemeral Storage)。官方建议节点可用空间至少为 etcd 快照大小的两倍,在生产环境中需预留数 GB 空间。如果看到
database or disk is full错误,说明需要扩容。 - 数据加密:缓存会将资源对象明文写入磁盘。若涉及敏感数据,可通过在 Rancher Pod 和 Agent Pod 中设置环境变量
CATTLE_ENCRYPT_CACHE_ALL=true来开启加密(密钥和安全令牌始终默认强制加密)。 - 功能限制:
- 列表数据是每 5 秒自动刷新一次,而非实时。
- 部分列的排序/过滤功能会受影响(如节点列表的 CPU/内存列、Pod 列表的镜像列等)。
- Workloads 列表中原来混合展示多种资源类型的视图已被移除。
辅助优化机制
除了 ui-sql-cache,Rancher UI 还内置了其他优化逻辑:
- 增量加载:在资源数量超过阈值时,列表会启用“增量加载”模式,优先展示部分数据并分批加载剩余内容,提升首屏渲染速度。
- 重复请求合并:Store 层会自动识别并合并同一时间发出的相同 API 请求,避免重复调用。
总结
ui-sql-cache 是 Rancher 团队为应对大规模集群管理而设计的生产级特性,它通过“以磁盘空间换 API 压力”的策略,显著提升了 UI 在大规模环境下的流畅度。
建议在升级前预先评估 Rancher Pod 的临时存储配额,并在开启后关注节点的磁盘使用情况。如果希望关闭此功能回退到旧版模式,直接禁用 ui-sql-cache 开关即可。
注意:2.12 或者 2.13 的早期版本存在一些 BUG,可能会导致 rancher ui 无法正常显示。如果升级到 2.12 或者 2.13 系列,请更新到当前系列的最新版本。
点击右上角账户头像,选择偏好设置。在显示设置中减少每页行数数值,比如设置为 10 或者 25,默认为 100。经过调整,资源数量比较多的页面,比如 Pod、Secret 等,将实现秒级显示。
参考文档:


