什么是 KubeVirt?
KubeVirt 是一个开源项目,让用户能够使用 Kubernetes 作为底层编排平台来运行、部署和管理虚拟机(VM)。在容器内运行虚拟机的流程被称为容器原生虚拟化。KubeVirt 通过将这些虚拟机打包到容器中并从单个控制台管理这两种工作负载,实现了容器原生虚拟化。
利用 KubeVirt,虚拟机会像在传统虚拟化环境中一样运作,不过它们可以与容器化微服务和云原生应用在同一平台上运行。环境中的所有工作负载(包括虚拟机)都将受益于相同的 Kubernetes 基础架构、工具和管理方式。
KubeVirt 由云原生计算基金会(CNCF)赞助,是红帽® OpenShift® 虚拟化的开源基础,同时也是红帽 OpenShift 的一项功能,支持在可信的混合云应用平台上迁移和管理传统虚拟机。
KubeVirt 是如何运作的?
KubeVirt 通过扩展 Kubernetes 应用编程接口(API)来发挥作用,因此它能以与其他 Kubernetes 资源和工具相同的方式与虚拟机交互。这样一来,容器和虚拟机就可以共享同一个集群、节点和网络。
KubeVirt 的新增功能由 3 个主要组件组成:
- 自定义资源定义(CRD):自定义资源对象可扩展 Kubernetes API,并且允许您在项目或集群中引入自己的 API。自定义资源定义文件可定义对象类型,并让 API 服务器处理整个生命周期。KubeVirt 为 Kubernetes API 提供了 CRD,使其能像处理其他 Kubernetes 对象(例如容器集)一样处理虚拟机。
- 控制器:控制器是在集群上运行的一组部署,为管理新的 KubeVirt CRD 提供 API 端点。
- 代理:代理在群集的工作节点上运行,用于管理与虚拟化相关的节点任务。
我们还可以将 KubeVirt 视为一个运行基于 KVM 的虚拟机的容器集。在 Kubernetes 中,容器集(pod) 是一组一起运行并共享相同资源的容器;KVM(基于内核的虚拟机)是一项开源技术,可扩展 Linux® 内核,使其作为虚拟机监控程序运行。有了 KubeVirt,虚拟机实例可以像容器集一样运行。这样一来,KubeVirt 就可以管理虚拟机的状态(例如“已停止”“已暂停”和“运行中”),并执行运维(例如置备、调度和迁移虚拟机)。
红帽资源
您可以利用 Kubevirt 做些什么?
创建虚拟机
使用 virtctl 命令行中的子命令 “create vm”,您可以在 Kubernetes 环境中创建虚拟机。您还可以控制实例类型和偏好设置,以便同时管理多个虚拟机的配置,包括设置性能配置文件和自定义运行时特征。
管理虚拟机
virtctl 命令行界面(CLI)与标准的 Kubernetes 命令行工具 kubectl 协同工作,为管理 Kubernetes 集群中的虚拟机提供特定于虚拟化的操作。利用 virtctl,虚拟机管理员可以:
- 停止、启动、重启和暂停虚拟机。
- 管理磁盘镜像。
- 访问虚拟机的序列、图形和 ssh 控制台。
- 在节点之间迁移。
Kubernetes 在资源编排和调度的过程中,采用了多层次的管理方式,有助于确保虚拟机的正常运行。如果您还运行容器工作负载,KubeVirt 可帮助您从单一控制平面管理和监控容器与虚拟机。
迁移虚拟机
KubeVirt 支持多种虚拟机迁移方法,包括实时迁移。实时迁移是指在不中断虚拟机访问的情况下,将虚拟机从一台主机移动到另一台主机并重新映射其存储的流程。对于需要确保持续正常运行的虚拟机来说,这是一个不错的选择,它可以避免在节点或平台之间迁移时运维中断。
试验并扩展
通过在 Kubernetes 上运行虚拟机,您可以试用更多功能。例如,容器化数据导入工具(CDI)是一种兼容的技术,可为 KubeVirt 虚拟机提供磁盘存储并管理存储资源。
Kubernetes 也是为了满足扩展的需要而设计。您不仅可以在上面试用新功能、为工作负载添加功能以及对传统应用进行现代化改造,还可以根据中央处理单元(CPU)的使用情况自动扩展和缩减规模。
Kubevirt 的优势
云原生集成
KubeVirt 让那些不易容器化的工作负载与云原生应用和微服务一起运行成为可能。虚拟化应用组件成为统一开发平台的一部分,开发人员可以在该平台上构建、管理、部署和扩展应用,无论这些组件是容器化的、虚拟化的还是两者相结合的形式。
利用 KubeVirt,虚拟机还可以受益于与各种 Kubernetes 原生功能的集成,例如基于角色的访问权限控制(RBAC)、集成式监控和日志记录、服务网格等。
现代化
通过虚拟化,我们就能在单一硬件上快速启动和停止不同的操作系统环境。这种方法可为 IT 生态系统带来诸多好处,包括灵活性、速度和稳定性。但随着虚拟化平台的发展和成本的增加,一些企业正在寻找新的解决方案。KubeVirt 是一个富有吸引力的选择,因为它不仅是虚拟机监控程序的替代之选,还提供了实现现代化改造的途径和平台。
借助 KubeVirt,您不仅可以同时创建和运行容器与虚拟机,还可以获得一个统一的平台,在此基础上开发新的应用并对传统的工作负载进行现代化改造。在实现现代化改造的过程中,您能够获得所需的资源和技术,以探索云原生开发、人工智能和机器学习方面取得的进展。
高级功能和功能对等性
KubeVirt 作为 CNCF 的孵化项目,不仅具有 Kubernetes 原生的高级功能,开源社区的贡献者还在不断对其进行改进和扩展。
KubeVirt 还提供与其他企业虚拟化平台(包括 VMware vSphere 和 HyperV)相似的功能,因此您可以像在传统虚拟化环境中一样执行相同的任务。
性能
KubeVirt 可以从容应对不断变化的 CPU 需求和内存分配情况,相比传统的虚拟化解决方案,能够降低延迟。KubeVirt 还可简化裸机硬件和运行时环境之间的抽象层,从而更有效地利用资源并提高性能。
KubeVirt 社区特殊兴趣扩展(SIG-scale)小组发现有必要评估 KubeVirt 不同版本的性能和可扩展性,因此他们开发了一些技术,用于监控 KubeVirt 在数据中心环境中的扩展情况。现在,KubeVirt 在每个版本发布后都会分享这些性能和可扩展性数据。
一体化安全防护
KubeVirt 能充分利用 Kubernetes 原生安全防护的优势,确保在包括虚拟机在内的所有环境中一致地应用策略。这使得用户可以指定适用于部署中所有容器集的单一配置(例如网络策略),而不必在群集中的每台主机上配置系统级控制。此功能使用户能够更加轻松地以一致和规模化的方式管理虚拟机的安全性。
通过将策略与 CI/CD 系统和 Kubernetes 许可控制器框架相关联,企业组织可以更轻松地在软件开发生命周期的早期阶段应用控制策略,以防在运行时出现漏洞。
KubeVirt 和红帽
红帽 OpenShift 虚拟化是一个基于 KubeVirt 和 KVM 的现代化应用平台,可以同时运行虚拟机和容器。随附的虚拟化迁移工具包提供了所需工具,只需简单几步即可从传统虚拟化平台迁移到新的平台。从大规模迁移到 Day 2 运维和修复,利用红帽 Ansible® 自动化平台可加快交付速度。利用红帽 Kubernetes 高级集群管理,从单一控制台监控虚拟机的安全性和性能。红帽在存储、备份和灾难恢复以及网络方面提供额外的支持选项和合作伙伴集成,您可以借此确保您的虚拟基础架构在整个混合云环境中顺畅运行,并且红帽可在您准备好时帮助您实现现代化改造。
红帽官方博客
获取有关我们的客户、合作伙伴和社区生态系统的最新信息。