KubeVirt CDI v1.65.0 版本更新

0 阅读3分钟

KubeVirt Containerized Data Importer (CDI) v1.65.0 版本于 2026 年 3 月发布,包含 45 项变更。该版本在存储灵活性、安全校验、性能优化以及构建工具链方面进行了重要改进。

核心结论

此版本的主要演进方向为:增强数据导入的安全校验、提升大规模环境下的运行稳定性、扩展特定存储场景(如 GCE、HPP)的支持,并完成了核心构建工具链的现代化(Go 1.24 / rules_oci)


1. 核心功能与增强 (Features & Enhancements)

  • 安全校验增强

    • 为 DataVolume 的 HTTP/HTTPS 导入源新增了 Hash 校验功能(PR #4010),确保下载数据的完整性。
    • CDI API Server 增加了 nosniff 请求头,提升安全性。
  • 存储灵活性扩展

    • Scratch Space 优化:临时空间(Scratch Space)PVC 现在会继承源 Storage Class,而非强制使用默认存储类(PR #4054)。
    • HPP 增强:HostPath Provisioner (HPP) Overlay 现支持 RWX 能力(PR #4032)。
    • GCE 支持:GCE 持久磁盘的 StorageProfile 现支持 RWO 文件系统模式。
    • DataImportCron 增强:支持感知 Provisioner 的 VolumeSnapshotClass 选择,并为 Cron 快照源公开了建议的恢复大小(advisedRestoreSize)。
  • 上传性能优化

    • Upload Server 现在可以使用 Headless Service(PR #4052),有助于直接连接 Pod 进行数据传输。

2. 稳定性与架构改进 (Stability & Maintenance)

  • 大规模集群优化

    • 防止参数溢出:在 CDI 工作 Pod 上默认设置 EnableServiceLinks=false,避免在包含大量 Service 的命名空间中因环境变量过多导致“参数列表过长”而启动失败(PR #4067)。
    • 减少资源冲突:将 DataVolume 状态更新方式从 Update 改为 Patch,显著减少多个控制器同时操作同一资源时的冲突(PR #4040)。
  • 自定义权限支持:Importer 和 Uploader Pod 现在支持通过 annotation (cdi.kubevirt.io/storage.pod.serviceAccountName) 指定自定义 ServiceAccount(PR #4056)。

  • 状态透明度:在 StorageProfile 中增加了 "Recognized" 状态条件,用于明确提示 CDI 是否识别当前的存储驱动或存储类参数。

3. 可观测性变更 (Observability)

  • 指标重命名(弃用提示)

    为符合 Prometheus 命名规范,以下指标被重命名(旧名称已弃用):

    • kubevirt_cdi_clone_pods_high_restartcluster:kubevirt_cdi_clone_pods_high_restart:count
    • kubevirt_cdi_import_pods_high_restartcluster:kubevirt_cdi_import_pods_high_restart:count
    • 以及类似的上传和 Operator 指标。
  • TLS 配置继承cdi-operatorcdi-deployment 的 metrics-server 现能正确继承 TLSSecurityProfile 中的 TLS 选项。

4. 构建与技术栈更新

  • 编译器与构建工具

    • 升级至 Go 1.24.0
    • 升级至 Bazel 6.5.0
    • 构建架构迁移:从 rules_docker 迁移到 rules_oci,符合当前云原生容器构建的主流标准。

总结建议

如果你在生产环境中使用 CDI,尤其是涉及大规模 Service 部署对数据一致性有严格校验需求的场景,建议升级至此版本以利用 EnableServiceLinks 优化和 HTTP Hash 校验功能。此外,由于指标名称发生了变更,升级后需同步更新相关的 Prometheus 报警规则和 Grafana 面板。