2017年,KubeVirt团队启动了这个项目,在Kubernetes中与容器一起管理虚拟机(VM)。该开源项目的意图是使虚拟机在这个环境中成为一流的公民。
自从在2018年开源峰会上推出以来,KubeVirt一直在不断地成熟和发展。它在GitHub上已经达到了200多颗星,甚至在2021年2月推出了自己的活动–KubeVirt峰会。
KubeVirt是OpenShift虚拟化的基础,它帮助开发人员将虚拟机带入容器化工作流程。
在Kubernetes中利用虚拟机
KubeVirt让你能够在虚拟机上使用Kubernetes原生设备。这意味着它们可以连接到使用标准Kubernetes方法访问的pod网络,包括服务、路由、管道等。网络策略适用于虚拟机吊舱的方式与适用于应用程序吊舱的方式相同,提供一个一致的模型来管理虚拟机到吊舱(反之亦然)的通信。
这方面的一个真实例子是一家航空公司利用旧的模拟器软件的方式。它注入了人工智能和机器学习(AI/ML)的模型,然后在基于虚拟机的模拟器上自动部署和测试它们。这使得它能够使用Kubernetes和Kubeflow完全自动化地获得测试结果和新的遥测训练数据。
Konveyor.io是一个开源项目,帮助现有工作负载(开发、测试和生产)过渡到Kubernetes。它的工具包括Crane,将容器从一个Kubernetes平台转移到另一个平台;Move2Kube,将工作负载从Cloud Foundry带到Kubernetes;以及Tackle,分析Java应用程序,使其对Kubernetes等容器化平台中的运行时更加标准和便携,从而使其现代化。
这些工具在转型模式中很有用,但许多项目希望在早期阶段利用Kubernetes,以变得更加敏捷和富有成效。在基础设施方面,这些好处可能包括蓝/绿负载平衡、路由管理、声明式部署,或(取决于你的部署方式)由于不可变的基础设施而更容易升级。在开发方面,它们可能包括将持续集成/持续开发(CI/CD)管道与平台集成,使应用程序更快地投入生产,自我提供资源,或集成健康检查和监控。
KubeVirt可以通过在Kubernetes环境中作为虚拟机运行工作负载来帮助你。它能让你的工作负载迅速登上Kubernetes,享受它的好处,并随着时间的推移稳步实现工作负载的现代化。但是,你仍然有一个问题,就是把你的虚拟机从传统的虚拟化平台带到现代的Kubernetes平台。这就是Konveyor的Forklift项目的作用。
关于Forklift
Forklift使用KubeVirt将不同来源的虚拟化工作负载迁移到Kubernetes。它被设计成使任务变得简单,以便你可以迁移从一两台机器到数百台机器的任何东西。
迁移是一个简单的三阶段过程。
- 连接到一个现有的虚拟化平台(称为 “源提供者”)和一个Kubernetes环境(”目标提供者”)。
- 将网络和存储资源从源提供者映射到目标提供者,在两者中寻找同等资源。
- 选择要迁移的虚拟机,分配网络和存储映射,制定迁移计划。然后运行它。
如何开始
要开始使用Forklift,首先,你需要一个兼容的源提供商。你还需要一个具有KubeVirt 0.40或更新版本的Kubernetes环境和裸机节点(尽管为了测试,你可以使用嵌套虚拟化)。用读-写-执行(RWX)功能配置你的存储类,并使用Multus配置你的网络,以匹配你的虚拟机在源提供者中使用的网络。如果你不能这样做,不用担心;你也可以选择重新安排IP寻址。
最后,使用提供的操作者在你的Kubernetes上安装Forklift,并进入用户界面开始运行你的第一次测试迁移。
Forklift是Red Hat的虚拟化迁移工具箱的上游版本。因此,如果你想在生产环境中使用它,你可以考虑使用该工具的支持版本。
迁移愉快