容器与虚拟机,替代还是融合
最近一两年来,以容器为代表的云原生技术一直是IT行业最为热门的话题。随着云原生技术的崛起,有企业甚至跳过了IaaS层直接在物理机上部署容器。容器的风头几乎盖过云计算,甚至引发了OpenStack的未来堪忧的说法,容器与虚拟化谁将会是市场主流的话题时常被提起。现在还看不到答案,但市场有些了变化。4月底,红帽在其一年一度的技术大会Red hat Summit 2020上宣布推出OpenShift虚拟化的预览版,支持在容器里部署虚拟机,更早些时候,VMware宣布其最新一代云平台vSphere 7提供原生地管理容器和虚拟机的能力。虽然出发点不同,一个是从容器出发兼容虚机,一个是从虚机出发兼容容器,但殊途同归,两者都能实现容器与虚机的同时管理。现在看起来,容器与虚拟机之间有融合和和平共存之势。
云原生“来势汹汹”
云原生技术的兴起是这几年软件行业最新的变化之一,它给该行业也带来不小的冲击,或者说带来颠覆也不为过。它让应用程序有了明显的代际之分:传统应用与现代应用,也让越来越多的企业选择了拥抱现代应用。
容器是云原生技术的关键技术,今天微服务、DevOps以及CI/CD等都建立在容器之上。作为一种轻量级的虚拟化技术,相比于虚拟机,容器拥有更高的资源使用效率,因为它并不需要为每个应用分配单独的操作系统,因此实例规模更小、创建和迁移速度也更快。
总体上说,容器有三大核心价值,即敏捷、弹性、可移植性。在敏捷方面,容器能够让软件开发交付效率提升10倍,这意味着这个企业能具备更高的速度去进行快速迭代,以及有更低试错成本帮助企业在经营中赢得先机。在弹性方面,云计算已经利用虚拟化技术带来了一定的弹性可以有效控制成本,而利用容器可以实现秒级弹性扩缩容进一步优化成本,节省达50%以上。而在可移植方面,基于容器可以在不同云环境之间迁移实现无边界的计算。
因此,容器很自然地成为当下最受关注的软件技术之一,特别是随着Kubernetes(K8s)成为容器编排的事实标准,进一步加速了容器的普及。如果说容器为应用的快速开发和弹性奠定了基础,那么K8s就为容器的大规模模式和运维提供了保证。
Gartner曾预测,到2022年全球有75%的企业会使用基于云原生的容器技术构建它们的应用系统。而市场也有了一些迹象,IDC 发布的2019年第一季度公有云市场数据,IaaS市场增速有所减缓,同比增长74.1%;但PaaS市场依然保持高增长,增速为101.9%。各大云提供商也十分热衷于容器技术,AWS、微软Azure、谷歌云、阿里云都推出了容器相关服务,并作为重点市场。
容器与虚拟机之争
容器的普及对虚拟机形成了冲击,也就有了容器与虚拟机之争。容器与虚拟机本质上都属于虚拟化技术,所不同的是两者所在层级不同,容器在操作系统至上,与虚拟机相比少了操作系统,不同容器之间能共享操作系统,因此更轻量,启动更快,效率更好。也正因为如此,与虚拟机相比容器的隔离性要差,安全性不如虚拟机。另一方面,虚拟机应用得更普及,相关工具也更为成熟和完善。
总体而言,容器和虚拟机有着各自的优势,虽然在应用场景上有一些重叠,但主要应用场景还是有区别的。比如,虚拟机更适合当应用程序运行时需要所有操作系统资源和功能的场景,如果需要运行多个这样的应该,使用虚拟机更为合适。相比较而言,容器更适合在更少的服务器上运行更多的应用。大部分情况下大多数企业会同时使用虚拟机和容器。鉴于此,容器和虚拟化应当会在相当长时间内共存,特别是考虑到大多数企业此前已经广泛部署虚拟化技术的现实。
实际上,如何同时管理虚拟化和容器技术就成为企业的一个普遍的需求。作为虚拟化技术的最主要推手VMware很早就做出了反映,此前VMware通过在虚拟化平台上外挂PKS(Pivotal与VMware共同推出的一个K8s平台)来实现虚机与容器的同时管理,但毕竟是外挂,其效率和管理方便性上都有不足。去年的VMworld大会上,VMware发布Tanzu 品牌计划,宣布在虚拟化技术中原生地提供对容器技术的支持。VMware的Tanzu把虚拟机和Kubernetes结合起来,对虚拟机和容器以及物理机统一进行管理,它能实现跨物理机、虚拟机以及内部数据中心、跨多个云来管理应用,从而为工作负载提供一个统一的支撑。
今年3月Tanzu正式亮相,VMware最新一代虚拟化平台vSphere 7对外发布,vSphere 7迎来了近10年最大的变革,VMware对vSphere进行了重构,将K8s嵌入vSphere的控制平面,让它成为一个K8s原生平台,从而原生地支持K8s。这样,那些VMware的传统用户无需在虚拟机和K8s容器环境之间做出选择,从而能自由在vSphere上进行现代应用程序开发和运营,同时继续利用现有的技术、工具和技能组合投资。
另一方面,容器厂商也认识到了虚拟化的客观存在,也在拥抱虚拟化技术,kubevirt 就是基于这个目的推出的。kubevirt是 Red hat 开源的以容器方式运行虚拟机的项目,使用容器的Image Registry去创建虚拟机并提供虚机的生命周期管理。在红帽4月底举行的年度技术大会Red Hat Summit 2020大会上,红帽宣布推出OpenShift 虚拟化的技术预览,OpenShift 虚拟化就源自KubeVirt开源项目。企业可以通过这一功能,在整合了云原生与传统工作负载的OpenShift上开发、部署和管理由虚拟机、容器和无服务器构成的应用。
虽然VMware和红帽的从不同出发点出发,但目的是一样的,而这背后的推动力则是企业的现实需求。对用户而言它们的行动无疑是受欢迎的,因为这能让企业少了后顾之忧,不再需要进行非此即彼的选择,不用纠结容器究竟应该部署在虚拟机还是裸机上,从而可以更灵活支持未来的各种应用。