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)。
- 防止参数溢出:在 CDI 工作 Pod 上默认设置
-
自定义权限支持:Importer 和 Uploader Pod 现在支持通过 annotation (
cdi.kubevirt.io/storage.pod.serviceAccountName) 指定自定义 ServiceAccount(PR #4056)。 -
状态透明度:在 StorageProfile 中增加了 "Recognized" 状态条件,用于明确提示 CDI 是否识别当前的存储驱动或存储类参数。
3. 可观测性变更 (Observability)
-
指标重命名(弃用提示) :
为符合 Prometheus 命名规范,以下指标被重命名(旧名称已弃用):
kubevirt_cdi_clone_pods_high_restart→cluster:kubevirt_cdi_clone_pods_high_restart:countkubevirt_cdi_import_pods_high_restart→cluster:kubevirt_cdi_import_pods_high_restart:count- 以及类似的上传和 Operator 指标。
-
TLS 配置继承:
cdi-operator和cdi-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 面板。