在传统的IT架构中,操作系统在管理计算机软硬件资源方面扮演着重要的角色伴随着IT架构进入云计算时代,它需要的也是相应的云操作系统以虚拟化和容器为代表的云基础软件负责数据中心存储资源的高效分配和管理,并合理分配给上层应用实现软件定义数据中心,已经成为云计算时代的重要基础设施
在全球云基础软件的发展中,诞生了很多云基础软件巨头如VMWare,红帽等,也孕育了OpenStack,Kubernetes等行业标准级别的全球开源项目伴随着中国政府和企业云趋势的发展,我们相信云的本地化将会取得快速进展,基于云的软件将在中国迎来新时代和新机遇
从服务器虚拟化到容器虚拟化,云基础设施软件不断发展虚拟化和容器是两种典型的基础云软件虚拟化是用软件重新定义和划分底层硬件资源,面向资源层,优化资源供给模式的技术容器是操作系统层面的虚拟化,面向应用层,改造应用和业务架构,而目前的技术趋势仍然是虚拟化和容器技术的结合OpenStack和VMWare是服务器虚拟化时代的两个云操作系统而Kubernetes则伴随着容器应用的兴起逐渐开始发挥更重要的作用我们认为在云原始时代,Kubernetes将是操作系统强大的竞争对手
软件技术的本地化正在加速进入云时代伴随着软件上云的发展,政府和企业,金融机构和各行业企业也在积极提出云本地化我希望以本地化和云化并行的方式进行新一轮的数字化升级在云本地化的推动下,国内基于云的软件厂商空间进一步打开,互联网行业进一步向政府,金融等传统领域拓展结合已有的落地案例,我们总结出云本地化在单机国产化,五个新的重要方向:私有云/混合云,虚拟化软件,容器管理软件,桌面云和云管理平台
云基础软件mdashmdash软件定义的数据中心
什么是软件定义的数据中心定义软件数据中心是在底层硬件架构之上的新的虚拟基础架构层目标是将数据中心的所有物理硬件资源进行虚拟化和软件化,将底层硬件与上层硬件完全解耦,一劳永逸地解决资源性能灵活性和架构可扩展性问题其内涵包括三个层次:软件定义计算,软件定义存储和软件定义网络
云基础软件是云时代的操作系统实施软件定义的数据中心在传统的IT架构中,操作系统扮演着管理计算机软硬件资源的角色伴随着IT架构进入云计算时代,它需要的也是相应的操作系统通过计算,存储和网络的虚拟化,将数据中心的存储资源高效分配和管理,合理分配给上层应用,最大限度地提高资源的利用效率为了实现软件定义的数据中心,以虚拟化和容器技术为代表的基于云的软件应运而生,成为云计算时代的重要基础设施
虚拟化:面向底层基础设施,实现计算资源的灵活分配。
虚拟化是一种使用软件重新定义和划分底层硬件资源的技术虚拟化技术主要应用在服务器层面由于x86服务器的设计有限,一次只能运行一个操作系统和应用程序,因此底层硬件资源的利用率较低
虚拟化技术是云计算的基础我们通常所说的Cloud 是将硬件资源虚拟化,将虚拟资源集中到一个中心资源池,最后增加支撑系统实现资源调度和共享的过程在向中央资源Ikenoe添加一层管理软件后,用户可以控制云中所需的基础架构,平台工具和应用程序虚拟化技术的作用是利用硬件资源池方便用户根据需要灵活调用计算资源
虚拟化的典型底层技术,mdash科索沃核查团—QEMU
KVM—QEMU是一种典型的底层虚拟化技术KVM是Linux内核中的一个模块,将Linux内核转化为Hypervisor可以实现虚拟化QEMU是一个开源的模拟处理器,可以独立模拟包括CPU和IO设备在内的整个计算机由于KVM位于内核空间,用户无法直接控制内核,所以开发人员选择相对成熟的QEMU技术,借助用户空间的管理工具与之交互
KVM和QEMU是互补的QEMU本身不依赖KVM,但单独QEMU的虚拟化效率较低QEMU通过KVM实现硬件虚拟化的速度,而KVM通过QEMU模拟设备,所以KVM QEMU可以实现完全意义上的服务器虚拟化在一个完整的Hypervisor中,KVM的功能是提供内核接口,实现对CPU和内存运行虚拟机的虚拟支持QEMU提供了输入输出设备的虚拟化以及各种虚拟设备的创建和调用管理
虚拟化的各种技术路线。
完全虚拟化和半虚拟化是两种典型的技术路线虚拟化是多个来宾操作系统共享原有底层硬件资源的过程,其核心是如何解决执行来宾操作系统发出的特权指令和调用主机硬件资源的问题从X86服务器的架构来看,其CPU细分为四种执行状态:Ring 0—3,其中Ring 0是操作系统内核mdash的执行状态,mdash内核模式,响铃
3为用户态,而不同虚拟化技术之间的核心区别就是Guest OS运行在宿主机CPU的何种执行状态之上。
全虚拟化 vs. 半虚拟化:两者之间的核心区别在于是否要对Guest OS的内核进行修改全虚拟化无需对Guest OS的内核进行特殊配置,部署灵活便利且具有较好的兼容性好,但缺点在于Guest OS无法直接管理底层硬件,通过hypervisor管理底层硬件需要有转换开销,性能落后于半虚拟化半虚拟化过事先经过修改的客户机操作系统内核共享宿主底层硬件来实现的,优点在于性能但同时也损失了部署的灵活性和兼容性
硬件辅助的虚拟化:通过硬件技术的辅助使得虚机性能接近物理机在硬件辅助的虚拟化中,CPU本身就为Hypervisor提供了便利,可以识别指令,从而避免异常,可以简化指令的处理过程而提升性能硬件辅助虚拟化拟化技术常用于优化全虚拟化和半虚拟化产品,目前主要的硬件辅助虚拟化技术有Intel的VT—x和AMD的AMD—V两种,同时市面上的主流全虚拟化和半虚拟化产品基本都支持硬件辅助虚拟化,包括KVM,VMware vSphere,Xen,Oracle VirtualBox等
容器:面向应用与进程,操作系统层级的虚拟化
容器是操作系统虚拟化的一种实现途径,负责为应用程序的运行提供环境容器的目的是为进程集合提供一个独立的运行环境,容器包含应用和其所有的依赖包,不同容器之间共享宿主机的硬件资源及操作系统通过使用容器,开发者可以便利地打包应用程序的代码,配置和依赖关系,从而实现应用程序快速,可靠,一致性部署
容器的本质是一个视图被隔离,资源受限的进程容器与虚拟机的相同之处在于都是帮助用户创造了隔离环境,但虚拟机与容器的隔离级别不同虚拟机在操作系统层面实现隔离,而容器在进程级进行资源隔离,同时容器的大小相比虚拟机更小,这也赋予了其更为轻量,灵活的特征
容器的底层技术:容器运行时,容器镜像,容器引擎
容器 = Cgroup+Namespace+rootfs+容器引擎Cgroups与Namespace是容器技术所应用到的两个Linux内核的关键特性,Namespace的主要使用是实现进程的隔离,而Crgourps则负责限制分配给进程的硬件资源,由Namespace+Cgroups 构成的隔离环境也被称为"容器运行时",rootfs作为Linux根文件管理系统,主要负责为容器进程提供隔离后执行环境的文件系统,也就是所谓的,容器镜像,
容器引擎负责准备运行容器所需要的资源,对容器生命周期进行管理容器负责与内核Namespace和CGroup等功能直接交互,并提供相应API使得外部能够与之进行集成容器引擎的功能是对容器生命周期进行管理,包括镜像管理,运行管理,容器网络等,而上层的容器编排管理系统则会通过CRI接口对容器引擎进行调用目前行业中较为活跃的容器引擎主要包括Docker,rkt,Pouch,Containerd和Cri—o等
容器的上层建筑:容器编排管理系统
容器编排是从容器向容器云跨越的关键在实际应用的过程中,通常会由大量容器构建成容器集群,以支撑复杂的应用程序体系结构,此时便需要相应的系统对容器集群进行统一的编排,管理,调度以k8s为代表的容器编排管理系统在容器引擎的基础上,为容器化的应用提供部署运行,资源调度,服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性从一个开发者和单一的容器镜像,到无数开发者和庞大的容器集群,容器技术实现了从"容器"到"容器云"的飞跃
Kubernetes是容器编排领域的事实标准Kubernetes是由Google在2014年发起的开源项目,具有轻量级,高便携,可扩展,自修复等优势,在2015年开始迅速拉开与Meso,Docker Swarm等竞争对手之间的差距目前k8s已经基本成为了容器编排领域的行业标准,AWS,Azure,Google,阿里云,腾讯云等公有云厂商均提供基于 k8s的容器服务,Red Hat,Rancher,IBM,Mirantis等厂商也在大力推广基于 Kubernetes 的容器产品,Docker/Containerd+k8s成为全球主流的容器产品路线
Kubernetes是云原生时代新的,操作系统,k8s集群由Master节点和Node节点构成:Master节点主要负责管理和控制,包括API Server,Scheduler,Controller Manager,Node节点主要是工作负载节点,包含Pod,Docker,Kubulet在应用容器化部署的云原生时代,k8s可以实现对容器集群的自动化部署,自动扩缩容以及高效灵活的管理,我们认为其已经成为了新一代的云操作系统以及云原生时代的基石
CNCF围绕Kubernetes建立起繁荣的云原生生态2015年,Google与RedHat牵头成立了以 Kubernetes 项目为基础CNCF社区,之后数年中CNCF逐渐发展壮大,而Docker由于现实问题也逐步放弃开源社区,在2017年将Containerd捐赠给CNCF,并在Docker企业版中内置k8s,CNCF自此成为全球容器生态的核心截至2020年,CNCF已经囊括了全球1,381个项目,按功能分为29个模块,分属与9中不同类别,这1,381个项目共同构建起了恢宏的,云原生世界,
虚拟机与容器:当前趋势仍是结合应用下的共同发展
容器和虚拟机相比各有优劣
容器的优势在于敏捷和高性能:Hypervisor架构下,在虚拟服务器上运行单个应用程序意味着需要运行完整操作系统及依赖环境,这为主机增加了大量的系统资源消耗而容器相比之下占用空间更小,其在底层资源和上层应用之前具有更少的抽象层级,且多个应用程序可通过容器技术共享操作系统内核,进一步提高了资源利用率,同时容器在应用迁移,快速拓展以及持续集成和持续部署实施等方面也更为灵活便捷
虚拟机的优势在于更强的隔离性和运维的简单性:基于Hypervisor的虚拟机可以实现系统层面的资源隔离,虚拟机之间完全独立,安全性高,可用于备份,容灾,而容器实际上仅实现了应用层面的隔离,安全和稳定性相对较低尤其是在多租户的环节下,由于不同容器共享主机的内核,如果某个容器应用需要配置内核参数,则会导致,牵一发而动全身,此外,虚拟化技术经过多年应用,已经是企业运维人员较为熟悉的一种技术,同时双层架构也具备运维上更加简单的优势
用户可根据自身的偏好来选择适合的云资源管理方案在实际应用的过程中,注重于安全性,稳定性的用户往往仍会以Hypervisor作为主要的,云操作系统,以实现对底层计算资源的管理,比如金融,运营商等传统行业在大量使用传统的VMWare或者OpenStack,而对于那些追求云原生,要求更高的资源利用率,以及更加灵活便捷架构的客户,Docker/Containerd+k8s的容器方案是更优解,事实上目前容器在互联网行业已经得到了广泛的应用,传统行业的应用厂商也在积极的对新一代引用进行容器化改造,我们相信容器的普及和渗透只是时间问题
容器与虚拟机的结合应用仍是当前主流
容器与虚拟机在公有云多租户场景中通常是结合应用的从云计算的概念提出开始,虚拟机一直是云平台的基础,平台的本身服务以及用户的使用基本都是从通用虚拟机的创建开始因此目前大部分的容器应用均是基于虚拟机而运行的,通常的做法是建一批虚拟机作为运行容器的节点,然后再在基于虚拟机Guest OS创建容器应用,如图表18左侧就是常见的公有云容器服务的提供形式
安全容器进一步将虚拟机级别的隔离直接引入容器应用在公有云多租户场景中,上述方案面临的问题是相同主机需要运行不同租户的应用,而容器的隔离级别依然采用了共内核的机制,导致了其存在着广泛的攻击面而所谓的安全容器,则是通过硬件虚拟化等技术实现对各个容器内核层面的隔离,每一个容器都是基于一个独立的内核实例来,形成一个轻量级的虚拟机
安全容器在容器的高效便捷与虚拟机的稳定安全之前取得平衡安全容器的定位位于容器和虚拟机之间:安全容器兼容容器的操作方法,在启动速度,内存开销等性能指标上也高度接近容器,同时安全容器通过引入虚拟机级别的隔离,显著提升了容器的隔离层级和安全性目前行业中常见的安全容器实现方式包括Kata—containers,Google gVisor,AWS Firecracker—containerd,IBM Nabla,VMware CRX等,其中Kata—containers是目前具有较佳兼容性,得到了较为广泛的应用
云基础软件的演变mdash,mdash,历史变迁与未来趋势
云基础软件的市场现状:虚拟化进入成熟阶段,容器应用蓬勃发展
虚拟化技术渗透率已接近饱和,市场规模趋于稳定根据Statista数据,全球虚拟化市场规模将从2018年的57亿美元增长至2025年的90亿美元,2018—2025年CAGR为7%Spicework的调查显示,2020年已有92%的企业使用服务器虚拟化技术,虚拟化技术在企业的运用已基本达到饱和,市场增长放缓
容器应用快速普及,市场规模持续增长根据Gartner预测,全球容器编排系统市场国模将从2020年的4.7亿美元的增长到2024年的9.4亿美元,2020—2024年CAGR可达20%全球企业对容器技术的需求也在快速增长,Gartner预计2022年超过75%的全球企业将在运营中使用容器化应用程序,而2020年使用容器的企业占比不到30%,到 2024年,高达15%的企业应用程序将在容器环境中运行,这一比例在2020年小于5%
全球云基础软件的主要玩家
虚拟化:全球虚拟化市场的主要参与者可以被划分为两派mdash,mdash,开源和闭源。其中VMWare及微软是闭源虚拟化软件厂商中的代表,而剩下大部分的厂商的产品则是基于开源的KVM或者Xen技术,
闭源虚拟化的代表是VMWare的ESXi及微软的Hyper—V:ESXi是使用全虚拟化技术的Type I Hypervisor,是VMware虚拟化套件vSphere中的重要组件由于VMware是首个基于x86服务器提供服务器虚拟化解决方案的公司,ESXi得到了广泛运用Hyper—V是半虚拟化Hypervisor,可内嵌于Windows系统中,用户可选择免费发布版或付费企业版
开源虚拟化的代表是KVM和Xen:KVM是内嵌于Linux内核中的开源虚拟化技术,可将Linux操作系统转为Type I HypervisorRedHat,Oracle等厂商是基于KVM虚拟化领域的领导者,同时AWS,阿里云,华为云等云厂商也主要是提供基于KVM的虚拟化服务Xen是一种由剑桥大学研发的半虚拟化技术,2005年,经过Intel修改后的Xen 3.0变为全虚拟化,可支持Intel硬件辅助虚拟化Citrix于2007年收购XenSource,但选择将服务器虚拟化产品XenServer继续开源
VMWare仍是企业级应用的首选,KVM在云厂商中应用广泛Spicework的调查显示,目前闭源的Hyper—V和vSphere仍然在企业级市场占据主导地位,VMWare在商用虚拟化软件市场的龙头地位依然稳固,但最近几年来,伴随着OpenStack作为开源的云计算管理项目到行业越来越广泛的应用,KVM作为OpenStack主流的Hypervisor选择,其市场影响力正在快速提升,除了RedHat,Oracle等厂商之外,AWS,阿里云,华为云等云厂商目前主要也是提供基于KVM的虚拟化服务
OpenStack是全球领先的开源云计算管理项目OpenStack是由Rackspace和NASA成立的开源项目,目前已经是是仅次于Linux的全球第二大开源社区,OpenStack提供了一个部署云的操作平台或工具集,覆盖了计算,存储等10个核心组件和众多附加组件用户可以基于OpenStack对物理集群上的所有虚拟机进行管理,实现公有,私有云的搭建与运维,且OpenStack现已实现对容器的支持
OpenStack本身并不具备虚拟化的能力,KVM是其主流的Hypervisor选择作为云管理平台,OpenStack本身不提供虚拟化功能,真正的虚拟化能力是由底层的Hypervisor提供,其支持包括开源的KVM,Xen,也包括厂商的Hyper—V等但由于最初版本OpenStack的虚拟化技术即是基于KVM的,两者都使用相同的开放源理念与开发方法,因此KVM目前仍是OpenStack主流的Hypervisor选择2020年的OpenStack用户调查显示94%的用户选择KVM作为Hypervisor
OpenStack与KVM彼此成就,相互辉映OpenStack目前已经发展成为全球最大的开源云计算管理项目之一,截至2020年其生态系统已囊扩了超过850家企业及机构,我们认为OpenStack与VMWare实际上的服务器虚拟化时代的两大主流,云操作系统,而OpenStack的兴起也带动了KVM的快速发展,目前KVM已经成为全球开源虚拟化技术中的主流,2020年AWS,华为云宣布将物理服务器的Hypervisor从Xen转为KVM,我们认为未来KVM甚至会进一步挑战VMWare等厂商在企业级市场的地位
容器:正如我们在上一章节中的讨论,目前Docker/Containerd+k8s已经成为了全球容器技术的事实标准,由于开源的容器引擎基本不进行商业化变现,因此我们对于容器市场的规模和市场份额讨论集中于容器编排管理软件市场层面,根据艾瑞咨询发布的数据显示,k8s占据了2019年全球Docker容器编排管理工具份额的77%,市场上大部分的容器编排软件均是基于k8s的商业发行版。
伴随着全球容器市场的快速发展,各厂商积极推动收购及合作目前全球容器基础软件市场份额Top 5分别是Red Hat,Mirantis,VMware,Rancher和Canonical其中Red Hat推出的OpenShift目前是全球应用最为广泛的企业级k8s版本
传统虚拟化厂商也在积极拥抱容器技术全球容器编排管理软件收入Top3的红帽,Mirantis和VMware,目前也推出了具有代表性的虚拟化产品,如VMware的vSphere,Mirantis将原有的OpenStack平台与K8S融合形成新的云平台全球领先的云厂商等也在积极推出容器产品:如华为云的虚拟化套件Fusion Sphere中包含了支持K8S的Fusion Container容器模块云厂商们正致力于将容器技术与虚拟化技术结合以提供系统化的解决方案
云操作系统的历史变迁:从服务器虚拟化到容器虚拟化
云基础软件的发展历程实际上是云操作系统的变迁传统操作系统的定义是管理计算机硬件和软件资源的计算机程序在计算资源虚拟化的云计算时代,担任这一角色的是管理虚拟化硬件资源的Hypervisor,OpenStack或是Kubernetes回看历史,我们认为在虚拟化时代,VMWare和OpenStack实际上扮演的就是,云操作系统,的角色,而在未来的云原生时代,Kubernetes有望成为新一代的,云操作系统,
VMWare与OpenStack是服务器虚拟化时代主要的两大,云操作系统,VMWare在产品成熟度和稳定性上领先,目前在企业级市场依旧占据主导地位,是数据中心虚拟化领域的,王者,,但其封闭的软件系统架构也决定了其并不具有开放性,软件的发展路线是完全遵循VMware自身的发展目标OpenStack作为开源的系统,其天生的优势在于其多远化的发展路线以及广阔的发展潜力,背靠众多云计算产业巨头的支持,其在功能完整性,稳定性,易用性上最近几年来也在快速提升,其作为开源项目的中立性也使其成为AWS,阿里云等众多公有云厂商的首选
Kubernetes是容器虚拟化时代新的,云操作系统,伴随着应用进程容器化部署的普及,负责容器调度,编排,监控的Kubernetes自然成为了容器应用时代重要的,云操作系统,而从Kubernetes而OpenStack的关系上看,我们认为目前两者之间仍是互补大于竞争Kubernetes面向应用层,实现应用及业务架构的变革,OpenStack 面向资源层,实现资源供给模式的优化短期来看,我们认为OpenStack仍将是构建云基础设施的一个重要工具,与k8s在企业云及数据中心应用中互补共存
云操作系统的未来展望:Kubernetes迈入云原生时代
Kubernetes是云原生时代的,操作系统,有力的竞争者虚拟化技术是云计算的基础,而容器应用也将是云原生时代的基石在云原生时代,我们认为容器将是最为基本的进程单位,而负责容器调度,编排,监控的容器编排管理系统,实质上扮演就是服务器时代操作系统的角色,向上调度编排应用进程,向下调配管理底层资源未来如果Kubernetes能够进一步发展成熟,解决其现有在多租户设计方面存在的一些问题,我们认为其将可能进一步发展成为云原生时代唯一的,操作系统,