近日CNCF 会在华首秀,吸引国内无数的云原生技术粉的会聚一堂。云原生被喻为未来架构,在CNCF (云原生计算基金会)的推动下,以Kubernetes 为代表容器工具得到了迅速的发展,很多人都相信容器才是云计算的未来。那曾经奠基云计算平台的虚拟化技术是否就真的会成为过去时?
容器与虚拟机谁会是未来云计算的方向?在分析这个问题之前我们可以先从思想层面上来重解什么是云原生;有人坚信云原生(Cloud Native)是一种文化,更是一种潮流,它是云计算的一个必然导向,是让云成为云化战略成功的基石。
原生的对立面当然是非原生(虚拟化),即使是在CPU 和操作系统内核支持的情况下虚拟机上的操作系统及业务系统所使用硬件资源仍然不直接寻址的。一个基于虚拟机运行的业务系统与原生操作系统中间隔着一个虚拟系统,有如人与人之间隔阂,不仅会损失硬件性能还会让多可以直接寻址的接口操作都需要驱动级的映射才能完成,兼容性的问题有时也困扰运维人员。而容器技术越发成熟之后各个沙盒间的相互独立互不影响,却能直接使用原生系统的资源。硬件资源的利用率更高。而且容器的创建与维护比虚拟机更简单,一个业务系统在虚拟机上交付,需要有足够的资源来创建虚拟机,然后为虚拟机安装操作系统、部署业务系统所需的各种支持环境。如果多个业务系统所需要支持环境依赖库间有冲突互斥你则需要新建更多的虚拟机。反之对于容器而言只需要再开一个镜像即可。
云原生更节省物理服务器的硬件资源;更易于业务系统的快速交付。是微服务架构、无服务器架构的时代这项技术更为云平台服务提供了基础支撑,在虚拟化时代一个开发人员为了发布自己的应用,需要去租用一个云主机或VPS ,自由的按需配置管理云主机的操作系统与支持环境配置及参数,然后发布自己业务和WEB应用。在采用无服务架构在模式下,你可能根本不需要一台服务器,更不用去关于如何去配置服务器,需要只是服务本身,云端的容器中的WEB 服务或数据库服务会提供接口给开发者,开发者只用关心程序的实现,不用折腾服务器与环境的配置。
上述说了这么多云原生,那虚拟机真的就无用了吗?当然不是虚拟机至今仍然有着不可取代的独立性。目前公有云Docker 仓库中的应用毕竟是有限的,特别是我们是租客身份时版本、参数、配置的可选择性也只能在可选的套餐之中。但是云主机(虚拟机)则不同, 你得到是一台无异于真机的计算机,你可以对系统做任意的配置设置、安装自己所需要应用软件配置自己源,不用束缚于仓库。在虚拟机算力允许的情况下,你可以在租用云主机上安装Kubernetes 来编排容器,最大化的发挥虚拟机的价值,而只需要支付这一台云主机的租金。
因此,在未来很多时间内虚拟机仍然会是云计算交付方式不可缺少的基础,或者说容器与虚拟机从来也不矛盾。毕竟虚拟机之上难以再开虚拟机,但是虚拟机运行容器却是一种非常低成本高效率的混合交付模式。