主题
00 · 评审导读与会议材料
| 项目 | 内容 |
|---|---|
| 文档编号 | HV-ADMIN-DOC-00 |
| 文档名称 | Harvester 虚拟机运维管理平台 · 方案/需求评审会材料 |
| 版本 | v0.1(初稿,待评审) |
| 会议目标 | 对齐方案总体架构、确认需求范围与优先级、拍板 12 个关键决策项、明确分工与排期 |
| 建议时长 | 120 分钟(方案 40' + 需求 35' + 决策 30' + 分工排期 15') |
| 输出物 | 评审结论、决策清单(本文档第 5 节表格逐项签字)、需求基线 v1.0、里程碑计划 |
1. 参会角色与关注点(评审前请各自认领)
| 角色 | 核心诉求 | 本次必须确认的事项 | 重点阅读章节 |
|---|---|---|---|
| 产品 | 用户价值、交付节奏、范围不失控 | MVP 范围与优先级(P0/P1/P2)、上线里程碑、验收指标、自助门户形态 | 02 全文、01 §2 §3 §9 §10 |
| K8s 专家 | 技术可行性、不破坏 KubeVirt/Harvester 语义 | 接入方式(kube-apiserver CRD vs Harvester HTTP API)、幂等与调谐模型、CR 字段映射、版本兼容矩阵 | 01 §4 §5 §6、03 §5 |
| K8s 运维 | 集群稳定、变更可控、平台不能成为风险源 | 平台 ServiceAccount 最小权限、平台故障不影响原生操作、迁移/备份对集群的压力限流、平台自身部署位置与 HA | 01 §6.5 §6.6 §7 §8、04 §4 |
| 服务器运维 | 宿主机维护、上下线、容量水位 | 宿主机维护模式编排(cordon/排空/批量迁移)、容量水位看板、节点标签与调度约束 | 01 §6.5、02 FR-MIG/FR-RPT |
| 网络运维 | IP 不冲突、网段可管、VLAN 清晰 | 静态 IP 落地方式(cloud-init / Managed DHCP / 外部 DHCP 保留)、网段与 VLAN 归属、网关/DNS、IPAM 权威源、mgmt 网络限制 | 01 §6.4、02 FR-NET、03 §2.6 |
| 应用运维 | 研发自助、交付快、责任清晰 | 一键创建模板(规格族/镜像/网络/初始化脚本)、元数据字段(负责人工号、服务名)、审批是否阻塞、失败回滚 | 01 §6.2 §6.7、02 FR-CRT/FR-META |
| 监控中心 | 告警可闭环、指标可采集 | Prometheus/Grafana 接入方式、平台自身指标与日志、告警联动(迁移失败/备份失败/IP 冲突)、值班通知渠道 | 01 §6.9、02 FR-MON/FR-NTF |
| CMDB 管理员 | 数据一致、字段规范、来源唯一 | 字段映射与权威源、同步方向与频率、对账与差异处理、工号/组织架构来源、存量 VM 补录方案 | 01 §6.7、02 FR-CMDB、03 §2.9 |
2. 评审前必读(Pre-read)
docs/01-总体方案设计.md§3(范围)、§4(Harvester 能力基线)、§5(总体架构)、§6.2/6.4/6.5/6.6(关键方案)docs/02-需求规格说明书.md§5(功能需求总览表,先看优先级列)、§8(非功能需求)docs/04-角色分工RACI与风险清单.md§1(RACI)、§5(开放问题)- 各自领域需提前准备的数据:
- 网络运维:现有 VLAN / 网段清单、网关与 DNS、是否有内部 DHCP、IP 台账现状
- K8s 运维:Harvester 版本、集群数量与规模(节点数/VM 数)、backup-target 是否已配置(NFS/S3)
- CMDB:CI 模型(虚拟机 CI 字段)、工号与组织架构数据源(HR/OA/LDAP)、现有 CMDB API 能力
- 应用运维:TOP 20 服务的部署规范(命名/规格/初始化脚本)、当前申请 VM 的平均耗时
- 监控中心:Prometheus 地址与只读账号、告警平台对接协议(Webhook/钉钉/企微)
3. 会议议程(时间盒)
| 时间 | 议题 | 主讲 | 产出 |
|---|---|---|---|
| 00:00-00:05 | 目标与背景、痛点数据 | 产品 | 共识:为什么要做 |
| 00:05-00:25 | 总体架构 + 接入方式选型 + 部署形态 | K8s 专家 / 架构 | 架构基线 |
| 00:25-00:45 | 关键方案走查:一键创建、静态 IP、热迁移、备份恢复 | 架构 | 技术可行性确认 |
| 00:45-01:05 | 元数据模型 + CMDB 同步 + 权限/审批/审计 | 架构 + CMDB | 字段基线、同步策略 |
| 01:05-01:20 | 需求范围与优先级(P0/P1/P2)确认 | 产品 | 需求基线 v1.0 |
| 01:20-01:50 | 12 项关键决策逐条拍板(第 5 节) | 全体 | 决策记录 |
| 01:50-02:00 | 分工(RACI)、排期、PoC 计划、风险 | 项目经理 | 里程碑计划 |
4. 需求优先级共识(MoSCoW)
| 级别 | 含义 | 判定标准 | 对应里程碑 |
|---|---|---|---|
| P0 / Must | 不做则项目无价值 | 直接影响 VM 交付效率、数据安全、责任归属 | Phase 1 MVP |
| P1 / Should | 上线后 1~2 个迭代内必须补齐 | 影响运维效率或合规,但有临时人工兜底 | Phase 2 |
| P2 / Could | 增值能力 | 提升体验/运营能力,可延后 | Phase 3 |
| P3 / Won't(本期) | 本期明确不做 | 见 02 §4.2「不在范围内」 | — |
5. 【必须当场决策】12 个关键问题
决策方式:给出选项与推荐,现场确认后由产品/项目经理记录到
docs/04§5 开放问题跟踪表并关闭。
| # | 决策项 | 选项 | 推荐 | 影响面 | 决策人 |
|---|---|---|---|---|---|
| D1 | Harvester 版本基线 | A. v1.2.x B. v1.3.x C. v1.4.x D. v1.5+ E. 混合多版本 | 先由 K8s 运维给出现网版本;平台按「最低版本能力集」设计 + 版本能力探测(feature flag) | 备份定时策略、快照、Managed DHCP、CPU/内存热插拔是否可用 | K8s 运维 + K8s 专家 |
| D2 | 平台接入方式 | A. kube-apiserver 直连 CRD(推荐) B. Harvester HTTP API(Steve /v1/harvester/...) C. Terraform Provider D. A+B 混合 | A 为主(稳定、支持 watch、RBAC 精细),个别能力(如 VNC 代理)用 B 补充 | 全部功能实现方式、权限模型、代码复杂度 | K8s 专家 |
| D3 | 静态 IP 落地方式 | A. cloud-init 网络配置注入(通用、版本无关) B. Managed DHCP 附加组件(MAC↔IP 绑定,实验特性) C. 外部 DHCP 保留(网络组维护) D. A+C 组合 | A 为主 + IPAM 由平台管账;VLAN 网络必须,mgmt 网络不支持固定 IP | 网络组流程、镜像规范(必须含 cloud-init/qemu-guest-agent)、Windows VM 处理方式 | 网络运维 + K8s 专家 |
| D4 | IPAM 权威源 | A. 平台自建 IPAM 为权威 B. 现有 IP 台账/网管系统为权威,平台只读 C. 双向同步 | A(新建 VM 走平台分配),存量 IP 一次性导入 + 每日对账 | IP 冲突责任边界、网络组工作流 | 网络运维 + 产品 |
| D5 | 归属元数据权威源 | A. 平台为权威,推送到 CMDB B. CMDB 为权威,平台只读 C. 平台为「运行态权威」,CMDB 为「资产权威」,字段级分工 | C:平台权威 = 运行态与负责人字段;CMDB 权威 = 资产台账与业务归属;冲突以字段归属方为准并告警 | 数据一致性、对账规则、CMDB 改造量 | CMDB + 产品 |
| D6 | 组织架构/工号数据源 | A. HR 系统 B. OA/统一身份(LDAP/AD) C. 手工维护 D. B+C | B 为主 + C 兜底;工号必须校验存在性与在职状态 | 负责人字段可信度、离职资产回收流程 | CMDB + K8s 运维 |
| D7 | 审批范围与强度 | A. 全部操作审批 B. 仅生产环境高危操作(删除/覆盖恢复/生产迁移/超配额)审批 C. 不审批仅审计 | B:审批最小化,避免阻塞研发;审批对接现有工单/OA | 交付时效、合规 | 产品 + 应用运维 |
| D8 | VM 命名规范 | A. {env}-{service}-{role}-{nn}(推荐,DNS-1123 合规) B. 沿用现网自由命名 + 仅校验唯一 C. 按部门前缀 | A,存量不改名只补标签 | 全局检索、CMDB 关联、脚本自动化 | 应用运维 + 产品 |
| D9 | 技术栈 | A. FastAPI + React(团队既有栈,推荐) B. Go + controller-runtime(Operator 形态) C. Java Spring Cloud D. A + 二期引入 Operator | A(Phase 1/2)+ D(Phase 3 视规模引入 Operator 做调谐) | 招聘/维护成本、交付速度 | 产品 + K8s 专家 |
| D10 | 平台部署位置 | A. 独立管理集群(推荐) B. 部署在某个 Harvester 集群内 C. 虚机部署 | A(故障隔离、跨集群纳管自然);无条件时用 C(2 台 VM + 外部 PG) | 高可用、网络打通、成本 | K8s 运维 |
| D11 | 备份存储与保留策略 | A. 现有 NFS B. S3 兼容(MinIO/Ceph/云 OSS) C. 两者(本地 NFS + 异地 S3) | 由 K8s 运维确认 backup-target 现状;策略基线:生产每日全备保留 7 天 + 每周保留 4 周 + 关键系统月度归档 | 数据安全、成本、恢复 RPO/RTO | K8s 运维 + 服务器运维 |
| D12 | 试点集群与推广节奏 | A. 单集群试点(推荐,测试/预生产) B. 直接生产全量 C. 双集群并行 | A:Phase 1 结束在试点集群跑通并稳定 2 周后推广 | 风险控制、上线时间 | 产品 + 全体 |
6. 会议输出物模板(现场填写)
6.1 决议记录
| 序号 | 决议内容 | 结论 | 决策人 | 影响文档 | 生效日期 |
|---|---|---|---|---|---|
| 1 | |||||
| 2 |
6.2 行动项(Action Items)
| 序号 | 行动项 | 负责人 | 协办 | 截止 | 状态 |
|---|---|---|---|---|---|
| AI-01 | 提供现网 Harvester 版本号、集群清单(名称/环境/节点数/VM 数) | K8s 运维 | 会后 2 工作日 | 待办 | |
| AI-02 | 提供 VLAN/网段/网关/DNS 清单与现有 IP 台账导出 | 网络运维 | 会后 3 工作日 | 待办 | |
| AI-03 | 确认 backup-target(NFS/S3)现状、可用容量、异地备份诉求 | K8s 运维 | 服务器运维 | 会后 3 工作日 | 待办 |
| AI-04 | 提供 CMDB 虚拟机 CI 字段清单、API 文档、工号/组织架构数据源 | CMDB | 会后 3 工作日 | 待办 | |
| AI-05 | 提供 TOP 20 服务清单、规格标准(flavor)、cloud-init 初始化脚本 | 应用运维 | 会后 5 工作日 | 待办 | |
| AI-06 | 提供 Prometheus/Grafana 地址、只读账号、告警对接协议 | 监控中心 | 会后 3 工作日 | 待办 | |
| AI-07 | 提供宿主机维护窗口规范、单次维护最大迁移并发要求 | 服务器运维 | K8s 运维 | 会后 3 工作日 | 待办 |
| AI-08 | 确定试点集群与试点服务范围 | 产品 | 全体 | 会上 | 待办 |
| AI-09 | 完成 PoC 环境与测试集群申请(含 1 台可迁移宿主机) | K8s 运维 | 平台研发 | 会后 5 工作日 | 待办 |
| AI-10 | 需求基线 v1.0 发布(依据本次评审结论修订) | 产品 | 架构 | 会后 3 工作日 | 待办 |
6.3 需求变更控制
- 评审通过后,
02-需求规格说明书.md冻结为需求基线 v1.0。 - 基线后的变更须提交《需求变更申请》(变更内容、原因、影响范围、工作量、里程碑影响),由产品 + 架构 + 受影响角色三方评审,记录在
docs/CHANGELOG.md。 - 变更分级:S(不影响排期与架构,产品批准)/ M(影响 ≤1 迭代,架构+产品批准)/ L(影响里程碑或架构,重新评审)。
7. PoC 验证清单(Phase 0,2 周)
目的:把方案中所有 [PoC 验证] 项变成事实,避免开发返工。PoC 环境要求:1 个测试 Harvester 集群(≥3 节点)、1 个 VLAN 网段、1 个 NFS/S3 备份目标。
| # | 验证项 | 验证方法 | 通过标准 | 负责 |
|---|---|---|---|---|
| PoC-01 | 集群版本与 CRD 清单 | kubectl get crd | grep -E 'kubevirt|harvesterhci|cni.cncf';kubectl get nodes -o wide;读取 settings 中版本信息 | 输出版本矩阵与能力清单,落到 cluster.capabilities | K8s 专家 |
| PoC-02 | 以最小权限 ServiceAccount 建 VM | 按 01 §附录 A.6 的 ClusterRole 创建 SA,用 kubeconfig 创建/启停/删除 VM | 全部成功;越权操作被拒绝(验证 RBAC 有效性) | K8s 运维 + 研发 |
| PoC-03 | watch/informer 同步 | 长连接 watch virtualmachines + virtualmachineinstances,模拟断连重连 | 状态延迟 ≤ 5s;断连后自动重连且不丢事件(对账补齐) | 研发 |
| PoC-04 | 一键创建端到端 | 用平台生成的 YAML 创建 VM,验证 cloud-init 生效(hostname/SSH Key/用户) | VM 15 分钟内 Ready,SSH 可登录 | 研发 + 应用运维 |
| PoC-05 | 静态 IP(cloud-init) | 指定 MAC + 生成 netplan v2 网络配置,验证 IP/网关/DNS 生效;重启 VM 后 IP 不变 | IP 与分配一致,重启/迁移后不变;vmi.status.interfaces 上报该 IP | 网络运维 + 研发 |
| PoC-06 | 静态 IP 在 K8s 上报的可观测性 | 检查 VMI 是否上报 VLAN 网卡 IP(依赖 qemu-guest-agent) | 能读到 IP;若读不到,确定兜底方案(ARP 扫描/CMDB 回填) | 网络运维 + 研发 |
| PoC-07 | Managed DHCP 附加组件(可选) | 若版本支持,安装 addon,创建 network.harvesterhci.io/v1alpha1 IPPool + VirtualMachineNetworkConfig,验证 MAC→IP 绑定 | 能按 MAC 稳定下发固定 IP;否则本期不采用 | K8s 专家 |
| PoC-08 | Windows VM 静态 IP | Windows Server 镜像 + cloudbase-init / 初始化脚本 | 明确可行方案或明确列为限制项 | 应用运维 + 研发 |
| PoC-09 | 热迁移 | 创建 VirtualMachineInstanceMigration,观察 phase/进度;验证不可迁移场景(nodeSelector、PCI 直通)报错可识别 | 迁移成功率 ≥ 95%(测试集);失败原因可归类 | K8s 专家 |
| PoC-10 | 大内存 VM 迁移收敛 | 8C32G 高负载 VM 迁移,测收敛时间;验证是否需要 auto-converge / 迁移限速参数 | 给出「内存大小 × 业务负载」的迁移耗时经验值与建议阈值 | K8s 专家 |
| PoC-11 | 备份/恢复 | 创建 VirtualMachineBackup,验证 Ready;分别恢复为新 VM 与覆盖原 VM | 备份成功;恢复后系统可用;覆盖恢复有停机 | K8s 运维 + 研发 |
| PoC-12 | 备份一致性(fs-freeze) | 有 qemu-guest-agent 的 VM 在写压力下备份,校验文件系统一致性 | 无损坏;明确无 agent 时的降级策略 | K8s 运维 |
| PoC-13 | 定时备份原生能力 | 若版本 ≥ v1.5,验证原生 VM Schedules;否则使用平台调度器 | 确定 Phase 2 采用「原生」还是「平台调度」 | K8s 专家 |
| PoC-14 | 宿主机排空 | cordon 节点 → 批量迁移该节点上全部 VM → 验证无遗漏 | 提供并发上限与耗时的经验值 | 服务器运维 |
| PoC-15 | VNC/Serial 控制台代理 | 通过平台代理访问 VM 控制台(子资源 console/vnc) | 可打开控制台,权限受控,会话可审计 | 研发 + 安全 |
| PoC-16 | 元数据回标 | 给 VM 打 labels/annotations(工号、服务名),在 Harvester UI/kubectl 中确认可见 | 可见且不破坏 Harvester UI 行为 | 研发 |
| PoC-17 | CMDB 同步 | 调 CMDB API 推送/拉取,验证字段映射与幂等 | 双向同步成功,重复推送不产生脏数据 | CMDB + 研发 |
| PoC-18 | 规模压测 | 模拟 2000 台 VM 元数据同步与列表查询 | 列表分页 ≤ 1.5s;同步不阻塞 API | 研发 |
PoC 出口标准:PoC-01~06、09、11、16 必须通过;其余项给出结论或降级方案,并同步更新 01/02 文档中的 [PoC 验证] 标记。
8. 现状调研表(会前填写,会上对齐)
8.1 集群现状(K8s 运维填写)
| 项 | 内容 |
|---|---|
| Harvester 集群数量 / 环境分布 | |
| 各集群版本 | |
| 节点总数 / 单集群最大节点数 | |
| 虚拟机总数 / 单集群最大 VM 数 | |
| 存储:Longhorn 版本、总容量、已用、副本数、StorageClass 列表 | |
| 网络:Cluster Network / VM Network(VLAN ID)清单 | |
| backup-target 配置(NFS/S3、容量) | |
| 现有 VM 模板 / 镜像清单 | |
| 是否接入 Rancher(Virtualization Management) | |
| 现有监控:Prometheus/Grafana 地址、告警渠道 |
8.2 网络现状(网络运维填写)
| 项 | 内容 |
|---|---|
| 可用于 VM 的网段与 VLAN 清单 | |
| 每网段网关 / DNS / 域名后缀 / NTP | |
| 是否存在内部 DHCP 服务器 | |
| IP 台账现状(系统/Excel、字段、准确率) | |
| IP 命名/分配规则、保留段、禁止段 | |
| 安全组/ACL/防火墙策略变更流程 |
8.3 组织与 CMDB 现状(CMDB 管理员填写)
| 项 | 内容 |
|---|---|
| 工号来源系统 / 字段格式(长度、前缀规则) | |
| 组织架构层级深度 / 更新频率 | |
| CMDB 虚拟机 CI 模型字段 | |
| CMDB 是否提供 API(协议、认证、限流) | |
| 现有 CMDB 与虚拟化平台对账频率与差异率 | |
| 服务目录(服务名编码规则、服务与部门关系) |
8.4 应用现状(应用运维填写)
| 项 | 内容 |
|---|---|
| 月均新建 VM 数量 / 峰值 | |
| 常见规格分布(CPU/内存/磁盘) | |
| 操作系统分布(含 Windows 占比) | |
| 初始化标准(用户、SSH Key、Agent、监控、日志) | |
| 平均交付时长与主要卡点 | |
| 僵尸/无主 VM 数量估算 |