2013年docker的出现,引爆了容器技术,当时曾一度抛出“容器将取代虚拟机”的言论,容器和虚拟机一直以来都是争论不休,但时至今日,容器也并没有取代虚拟机,这两种解决方案之间具有明显的差异,用于解决不同场景的问题,从长远看,容器与虚拟机将仍然是并存的关系。
虚拟机是物理机的抽象,可以在物理主机上构建多个虚拟机,虚拟机和虚拟机之间是完全隔离的,每个虚拟机有独立的操作系统,虚拟机上可以运行完整的应用程序或者仅运行应用程序中的一部分,对于支撑应用程序负载而言,虚拟机相对于容器的缺点是笨重,需要更多的资源开销。
容器是操作系统内核的抽象,可以在操作系统上构建多个容器,容器和容器之间相对隔离,每个容器仅包含运行应用程序所需要的库和依赖,容器非常适合应用于CI/CD的应用场景,支撑微服务架构,与虚拟机相比,容器在联网等方面不太理想,另外对于云桌面这种需要完整os且完全隔离的场景也不是它能胜任的。
虽然虚拟机和容器有各自的适用场景,但社区也在考虑两者的融合和在同一平台下的共存,2017年RedHat发起了开源项目KubeVirt,目前在CNCF孵化,KubeVirt提供了一种全新的容器和虚拟机的共存方案,那就是将虚拟机以容器的方式来管理,实现一个平台对容器和虚拟机工作负载的灵活分配和管理,而且基于同样的kvm/libvirt技术栈。
RedHat在2019年的论坛中提到了oVirt/RHV虚拟化的未来走向以及Container-native Virtualization(容器原生虚拟化)的发展:
对于oVirt/RHV虚拟化,当前是为传统的应用或者那些对基础设施有弹性需求的应用提供企业级的虚拟化支持,未来将继续为企业级虚拟机应用提供高可靠、可扩展和更强大的能力支撑。oVirt/RHV被定义为成熟的、可信任的支撑第一级应用的虚拟化。
对于容器原生虚拟化,当前通过KubeVirt能够提供依赖虚拟机以及从虚拟机向容器转型的应用负载的统一平台,仍处于技术预览阶段,未来将进一步降低传统虚拟化与容器虚拟化之间的功能差异,以使二者能够更好的融合。
Container-native Virtualization是基于KubeVirt项目,目前已更名为OpenShift Virtualization(作为OpenShift的插件存在,OpenShift的开源项目为OKD),oVirt目前也在与KubeVirt对接,对于虚拟化和容器的结合,社区这块早已考虑,我们可以跟随社区的脚步即可,不同的应用场景选择不同的解决方案,不同的解决方案又是融合一体的。
借用RedHat的一句话:虚拟机和容器都不完美,它们彼此成就对方!
扫码加好友拉你进oVirt技术交流群!