系统总览
kube-res-foresight 围绕单个 Kubernetes 集群,把指标采集、资源预测、推荐与受控执行串成反馈闭环。阅读架构图时,先沿蓝色数据关系理解推荐怎样产生,再沿绿色控制关系看它在哪里应用。
Prometheus 抓取业务和集群指标,平台通过 HTTP API 主动查询所需历史与当前样本。图中的指标箭头表示数据关系,不表示应用向平台直接推送。实际用量与 Ready 副本随后再次进入采集和效果评估。
虚线表示可选能力:时序模型服务参与数值预测,AI 助手提供查询与分析入口。图按功能职责组织,方框不代表每项都要单独部署。
功能模块及其职责
| 模块 | 输入与职责 | 输出 |
|---|---|---|
| 模块与指标配置 | 一个工作负载对应一个模块,定义指标来源、单位、历史窗口、预测方式、资源边界与授权。 | 该工作负载的采集和运行策略。 |
| 采集与质量 | 渲染指标查询,分段读取,检查采样、缺口、单位和新鲜度。 | 有统一时间网格和质量信息的历史数据。 |
| 预测与评估 | 运行选定的方法;滚动回测比较基线,实际值到达后回填误差与评分。 | 预测序列、版本、采用资格和表现记录。 |
| 决策与保护 | 结合提前量、多算法共识、容量条件、固定周期、OOM/堆压力和边界。 | 资源规格、目标副本及决定因素。 |
| 推荐与执行接口 | 保存带版本和有效期的快照;分别提供准入资源建议和副本决策。 | 可追溯的建议与执行输入。 |
| 任务中心 | 调度采集预测、回测、评估、数据清理和 AI 定时任务,记录失败与重试。 | 周期作业和运行记录。 |
| 管理与审计 | 维护用户、LDAP、权限、连接和全局设置,展示动作、准入与降级记录。 | 可管理的配置和操作历史。 |
控制台通过 Platform 接口管理这些能力。平台和任务运行入口共享业务规则与数据库;可以按部署方式组合运行,模块划分不要求拆成多套独立服务。
两条独立的执行路径
新 Pod 资源:Kubernetes API Server 的准入流程调用 Kyverno,策略查询平台已验证且未过期的资源推荐,再按授权设置新 Pod 的 requests,以及模块管理的 limits。准入请求不等待采集、模型推理或长查询,推荐不可用时保留原始资源。
工作负载副本:Operator 主动读取平台模块与副本决策,检查边界、目标就绪状态、冷却和单步限制,再通过 Kubernetes Scale API 修改副本。Operator 不读取平台数据库,也不修改 Pod requests/limits。
两条路径分别授权。同一工作负载只能有一个副本控制者,Operator 与 HPA/KEDA 不能同时写同一目标的 replicas。资源推荐更新也不意味着运行中的 Pod 会立刻改变规格。
存储与外部依赖
| 组件 | 用途与边界 |
|---|---|
| Prometheus | 提供业务与集群指标。平台主动查询,不替代原有指标存储。 |
| 关系数据库 | SQLite、MySQL、PostgreSQL 按部署选择一种,保存配置、采集数据、作业、预测、推荐和审计记录。 |
| 时序模型服务(可选) | 通过模型连接提供外部预测,支持的服务可后台微调;失败按候选失败与兜底规则处理。 |
| LLM 与邮件(可选) | AI 助手查询平台记录,定时任务按计划生成回答并发送邮件;回答不直接变成资源或副本写入。 |
| Kubernetes API | 承载准入与副本变更。权限、工作负载状态和容量就绪共同影响执行结果。 |
反馈与观测
平台与 Operator 暴露 Prometheus Metrics,可结合 Grafana 观察运行状态。管理页面把预测、推荐、动作上报、准入和实测效果关联起来;指标抓取用于观测,执行不依赖 Prometheus 先抓取平台决策再回读。