kubevirt

kubevirt

KubeVirt 是什么?

KubeVirt Logo{width=600px}

KubeVirt 是一个由 CNCF(云原生计算基金会)托管的开源孵化项目,旨在将虚拟机(VM)工作负载无缝集成到 Kubernetes 生态系统中,实现容器与虚拟机的统一管理。

基于 KVM 虚拟化技术,通过自定义资源(CRD)将虚拟机作为 Kubernetes 原生资源管理。用户可通过 Kubernetes API 创建、调度和管理虚拟机,使其与容器共享同一集群基础设施,无需独立虚拟化平台。

核心用途:解决混合工作负载管理难题

KubeVirt 主要服务于以下场景:

  • 遗留应用现代化:迁移无法容器化的传统应用(如 Windows/.NET 应用、依赖特定硬件的 GPU 应用)至 Kubernetes 平台,避免重构成本。
  • 统一基础设施管理:在单一控制平面下同时运行容器和虚拟机,减少运维复杂度与工具链冗余。
  • 边缘计算支持: 结合 OpenYurt 等边缘框架,在边缘节点部署虚拟机,满足低延迟或离线运行需求。
  • 混合云与多云部署:通过 Kubernetes 的跨集群能力,实现虚拟机工作负载在异构环境中的一致管理。

关键技术特点

  • 原生 Kubernetes 集成
    • 使用 VirtualMachine CRD 定义虚拟机配置(CPU、内存、存储),通过 kubectl 或 YAML 文件管理生命周期(启停、迁移、删除)。
    • 虚拟机以 Pod 形式运行,复用 Kubernetes 网络(CNI)、存储(CSI)及安全策略(RBAC)。
  • 高级虚拟化功能支持
    • 实时迁移:节点维护时自动迁移虚拟机,保障业务连续性。
    • 硬件直通:支持 GPU 透传、SR-IOV 高性能网络、NUMA 拓扑优化,满足计算密集型需求。
    • 数据保护:在线/离线磁盘快照、备份恢复(集成 Velero)。
  • 生态无缝集成
    • 与 Prometheus(监控)、Argo CD(GitOps)、Istio(服务网格)等 CNCF 项目协同工作。
    • 提供 Cluster Network Add-on Operator (CNAO) 管理网络,Hyperconverged Cluster Operator 简化部署。
  • 跨平台兼容性
    • 支持多种虚拟化后端(KVM、Xen、VMware)及存储方案(NFS、iSCSI、本地存储)

核心优势

  • 统一运维,降低成本
    • 通过 Kubernetes 统一管理容器与虚拟机,减少学习成本和工具链投入,提升运维效率。
  • 性能无损与资源高效
    • 直接调用宿主机的 KVM 虚拟化层,避免嵌套虚拟化性能损耗。
    • 利用 Kubernetes 调度器优化资源分配,提高集群利用率。
  • 敏捷交付与 DevOps 集成
    • 虚拟机可通过 CI/CD 工具(如 Tekton)自动化构建、测试和部署,实现“虚拟机即代码”。
  • 平滑迁移路径
    • 提供迁移工具将 VMware 等平台的虚拟机直接导入 Kubernetes,保留原有配置(如固定 IP),支持渐进式重构。
  • 企业级扩展能力
    • 已验证支持 40,000 节点 规模集群,适用于金融、制造等大规模场景。

KubeVirt 的定位价值

KubeVirt 是 连接传统虚拟化与云原生生态的桥梁,它解决了企业遗留应用上云的痛点,同时赋予虚拟机容器级的敏捷性。

其核心价值在于通过技术融合实现“稳敏兼得”——稳态应用(VM)与敏态应用(容器)在统一平台共存,降低转型风险的同时加速云原生落地358。

KubeVirt 与传统虚拟化管理工具对比

能力 KubeVirt 传统虚拟化平台 (如 vSphere)
管理平面 Kubernetes 原生 API 独立控制台
资源调度 Kubernetes 调度器 专属调度引擎
运维集成 Prometheus/Argo CD 等生态 封闭或定制化插件
基础设施依赖 无(复用 K8s 集群) 需独立部署虚拟化层
跨云/边缘扩展 天然支持 需额外解决方案

为什么选择KubeVirt?

KubeVirt 技术满足了已经采用或想要采用 Kubernetes,但拥有不易容器化的现有基于虚拟机的工作负载的开发团队的需求。

更具体地说,该技术提供了一个统一的开发平台,开发人员可以在一个共同的共享环境中构建、修改和部署驻留在应用程序容器和虚拟机中的应用程序。

好处广泛而显著。依赖现有基于虚拟机的工作负载的团队有能力快速容器化应用程序。通过将虚拟化工作负载直接放置在开发工作流程中,团队可以随着时间的推移对其进行分解,同时仍然可以轻松地利用剩余的虚拟化组件。

可以用 KubeVirt 做些什么?

KubeVirt 和 Kubernetes{width=200px}

利用 KubeVirt 和 Kubernetes 来管理无法容器化的应用程序的虚拟机。

KubeVirt and VMs{width=200px}

在同一平台上结合现有的虚拟化工作负载和新的容器工作负载。

Containerized Applications{width=200px}

支持在容器中开发新的微服务应用程序,这些应用程序可以与现有的虚拟化应用程序进行交互。

所属组织情况

KubeVirt 属于 CNCF 基金会

处于 CNCF 基金会的 孵化中 阶段

CNCF Incubating{width=400px}