易理林 译 分布式实验室
2019年,我们预测在企业应用程序开发方面,将会出现一个重大转折,应用运行环境将从传统的虚拟机(VM)转向容器和Kubernetes容器编排。确切的讲,我们预测包括如下几点:
未来将是多云并存的时代。Docker容器与Kubernetes共存。公共云对外提供API服务接口,从调用结构看,好比是以前私有大型机的新表现形式。
VMware虚拟机的“提升和转变”的上云迁移方式,所带来的花费将会比客户预期要昂贵很多。虽然将应用移植或重构到Kubernetes不需要预付费用,但这通常意味着在运营阶段需要更多的费用。
Java没有过时,它还可能在提升、转移应用上云,以及在云原生环境下完全重构应用的开销方面扮演重要的中间角色。Java可能是“移动和改进”的轻便版本。
联想很大可能会考虑收购SUSE和超微硬件。
AWS、思科、谷歌、IBM、微软、甲骨文、红帽和VMware最近都宣布了自己的战略产品计划,都已经在布局2019年。Cloud Native Computing Foundation的KubeCon/CloudNativeCon也发布了预期外的两场私有云公告。戴尔技术收购VMware股票的申请已获股东批准并生效;红帽公司的股东将在1月投票表决IBM对红帽提出的收购要约。
什么是私有云?
用户自己管理云服务平台。这是区别云服务类型的中心原则。
安全的单租户解决方案。私有云必须是付费的企业或用户所有。
可透明地伸缩应用程序资源。在常规的混合云业务模型,相同的应用程序映像必须同时存在于私有云和公有云平台。如果应用程序可以从私有云扩展到多个公有云(多云环境),那将会获得额外的受益。
在运行状态下,数据和应用程序相对松耦合。软件定义网络(SDN)和软件定义存储(SDS)是区别于传统IT架构及所运行应用系统的关键。
OpenStack与红帽OpenShift
华为的FusionCloud,浪潮的InCloud和腾讯的TStack等私有云方案,全部都是OpenStack原生化部署。除此之外,OpenStack还是华为和腾讯公有云的框架。华为还在其公有云上采用FusionCloud容器引擎来支持Kubernetes原生环境。
超微认证了Canonical和SUSE的OpenStack发行版。
联想认证了SUSE的容器即服务(CaaS),该服务可以在OpenStack、公共IaaS和PaaS平台上运行。
红帽在其OpenStack发行版之上构建了OpenShift,是部署Docker和Kubernetes的容器解决方案。Red Hat的OpenStack和OpenShift发行版得到了大多数公有云、私有云以及全球主流服务器制造商的认证。
红帽最近推出了OpenStack Bare Metal认证。服务器供应商可以用此认证自己的服务器产品,符合认证的硬件可以由OpenStack Bare Metal 平台(OpenStack Ironic项目的产品化落地)远程管理。OpenStack Bare Metal兼容服务器厂商的管理平台,例如戴尔EMC的iDRAC、惠普的iLO,也兼容智能平台管理接口(IPMI)和Redfish等。这个认证和管理举措意义重大,将加速企业在私有云中采用Red Hat OpenStack和OpenShift产品。
然而,在2018年10月下旬,IBM宣布了收购红帽的意向(红帽股东将在2019年1月就收购进行投票)。但悬而未决的收购促使IBM的数据中心架构部门和公有云竞争对手(戴尔和VMware等)着手评估Red Hat的OpenStack和OpenShift的替代方案。
Kata容器和AWS Firecracker
尽管运行于OpenStack框架的Kata容器设计创意非常棒,但就在同年的11月底,AWS在它的Re: Invent大会上也发布了一个开源项目——Firecracker。一款快速、安全的微虚拟机服务,同样具有轻量资源使用特性。
AWS基于Linux内核虚拟机(KVM)构建了Firecracker,目标成为QEMU虚拟机管理器的替代方案。虽然,Firecracker理论上也可以运行在OpenStack上,但是AWS只聚焦在容器运行时,并将Firecracker部署在AWS的Lambda和Fargate公有云服务的底层。这也意味着Firecracker已经是非常的成熟。
Firecracker的出现似乎是Kata容器的直接竞争对手。让我们看看这2个项目未来几个季度的进展情况。在短期内,Firecracker还不能用于运行Docker或Kubernetes。
AWS Firecracker 架构(source:AWS)
公有云服务私有化
阿里云推出了基于Kubernetes的容器服务,设计了自有的PouchContainer容器系统(处于向Kata容器过渡的阶段)。不过,还没有在阿里的Apsara Stack私有云企业版中明确宣布支持Kubernetes。因为Apsara Stack企业版已经支持Docker,因此,我们预计支持Kubernetes应该是2019年的事情。有需要的用户可以提前在现有服务器上安装ApsaraStack企业版。
百度云支持Kubernetes,百度云的ABC-STACK私有云框架支持IaaS,但不清楚是否支持容器或Kubernetes。百度云按照Scorpio项目规范,将特定配置的ABC服务器预安装到机柜里,并在这之上安装ABC-STACK后,交付给客户。
微软Azure从9月份开始在Azure Stack中支持Red Hat的OpenShift容器平台。微软最近在Azure Stack上发布Kubernetes Marketplace的预览版本。与生产软件相比,微软Azure预览版减少或改变了服务条款。因为模板都是由Azure容器服务引擎生成的,所以Kubernetes市场与微软的Azure公共云的模版是一致的。所生成的集群运行的容器与Azure Kubernetes Service(AKS)的容器相同,并使用Azure资源管理器(ARM)模板为独立的Kubernetes集群提供部署和分配资源。
微软Azure Stack只能在微软认证过的硬件堆集上运行,这些硬件来自于微软的集成系统合作伙伴,包括Avanade、思科、戴尔EMC、惠普、华为、联想和Terra等。据说微软及其集成系统合作伙伴还没有大量销售Azure堆栈。客户故事很少,估计从合作伙伴那里购买的硬件也很少。
Microsoft Azure还是云原生应用程序包(Cloud Native Application Bundles,CNAB)的赞助商,CNAB是一种与云无关的开放源码包格式规范,是微软与Docker密切合作时创建的,还得到了HashiCorp和Bitnami的广泛支持。通过使用CNAB,云运营商可以使用单个安装文件来管理分布式应用程序,在不同环境中,稳定提供应用程序资源,无需使用多个工具就可以轻松管理应用程序的生命周期。
谷歌云的Google Kubernetes Engine(GKE)On-Prem目前处于 “早期访问” 阿尔法版本。这表示只对一小组特定的测试人员开放。 Google云表示,GKE On-Prem版将为客户提供的自有数据中心GKE体验和谷歌云是一致的。 GKE On-Prem版支持在本地数据中心安装和升级Kubernetes,并可以访问谷歌云平台(GCP)服务,也可以访问到对外开放服务代理API的其他云服务。谷歌、IBM、Red Hat、SAP等公司均支持服务代理API。Google云还表示,GKE On-Prem可以安装到客户已有的服务器上。
谷歌Kubernetes引擎早期访问版本还包括一个无服务组件。这个组件可使操作员在GKE群集上部署无服务器工作负载。但GKE On-Prem版是否包括这个组件就不得而知。
AWS在11月下旬的Re: Invent活动中宣布了AWS Outposts服务。旨在通过在客户数据中心部署AWS一体化硬件为客户提供AWS公有云体验。 我们相信AWS Outposts就是微软Azure Stack的直接竞争对手。 AWS使用自有硬件与微软OEM伙伴竞争的方式表明,它将直接与品牌服务器供应商争夺企业的 IT预算份额。
AWS Outposts定制的私有硬件由AWS出售,并由AWS提供完全管理、更新、维护和技术支持。这些定制硬件高度类似于AWS公有云中部署设备的设计。 客户将通过AWS管理控制台订购Outposts服务器。 AWS表示,可以订购一台或多台服务器,或四分之一、半个或整个机柜,而且一系列的计算和存储选项可供选择。Outposts容器和虚拟机将在IaaS实例上运行,与AWS公有云运行方式相同。
AWS计划交付2种类型的Outposts:
AWS原生版本,使用AWS公有云相同的API和控制平面。
基于AWS Outposts的VMware Cloud,使用VMware Cloud本地部署版本的控制面板和API。
AWS Outposts 发布图(source:AWS)
AWS声称将在2019年下半年提供Outposts。我们留意到微软花了将近四年的时间将Azure的一个子集嵌入到Azure Stack中。AWS在没有前兆下,宣布这个服务有点非同寻常。Outposts发布有可能提前了一年,我们怀疑AWS能否在2019年底之前推出Outposts产品的量产版本。
云原生
ICP可以与10月份发布的IBM 多云Manager一起使用,以提供跨多厂商公共云的混合容器功能。IBM目前支持OpenStack、Red Hat OpenShift和AWS,并承诺在2018年底支持微软Azure。
IBM已经发布了在评估和生产环境中运行ICP的最低硬件要求,且没有限制服务器及其他硬件必须为IBM生产的。ICP已经被认证可以在VMware vCenter、ESX、OpenStack和KVM hypervisor的IaaS实例上运行。
如果红帽的股东批准了IBM的收购要约,那么IBM将面临选择。
继续投资OpenShift,并扩展到OpenStack;
继续投资IBM Cloud Private的云原生路线;
将注意力一分为二,2个方向都保持。
我们相信长期投资云原生的IBM Cloud Private会是更好的方向。
在AWS re:Invent会议期间,甲骨文发布了Oracle Cloud Native Framework (OCNF),一个免费下载的开源软件包。它包括Docker和Kubernetes,以及最新发布的基于Fn项目的无服务器功能Oracle Functions。采用OCNF开发的应用程序都可移植到任何Kubernetes环境和底层硬件平台上。OCNF可以在公共云或私有硬件上运行,包括但不限于Oracle Cloud Infrastructure (OCI)公有云和客户私有云平台的OCI。
Oracle在OCNF堆栈中包含以下开源软件:
OS:Oracle Linux发行版及之上的OCI
开发工具:Jenkins X,Helm,MySQL,Kafka,Spark,Spinnaker,Bitnami
监控工具:Prometheus,Grafana,Fluentd,Crashcart,Instana
资源分配:Terraform,Vagrant,Ansible,Chef,Puppet,Clair,Notary
编排器:Kubernetes,Istio,Envoy
运行时:Fn,Docker,Kata,CRI-IO,Calico,Flannel,Ceph,Gluster,Java,Helidon.io,OpenJDK
安全工具:Twistlock,Aqua
Oracle Cloud Native Framework(source:Oracle)
上述工具还不是全部,Oracle还将Kubernetes与Oracle Fusion中间件(WebLogic服务器)集成到一起,以实现Kubernetes容器环境中,运行WebLogic应用。
还有一个不可忽视的点,Oracle还控制着Java Standard Edition(SE),并且OCNF拥有Helidon.io社区。可以为Java SE应用提供集成交付。即客户可以在Kubernetes运行Java SE业务逻辑。对于更严谨的Java开发人员,我们建议关注Eclipse Jakarta EE工作组,因为Oracle在今年早些时候向Eclipse基金会捐赠了Java Platform,Enterprise Edition(Java EE)。Jakarta EE有计划成为Oracle Java EE 8的云原生升级的通道【请参阅关于Jakarta EE(https://jakarta.ee/)的更多信息】。
思科最近也宣布了基于AWS的Kubernetes的混合解决方案(CHSK on AWS)。与OCNF一样,CHSK也是云原生的:它不依赖于任何类型的VM。CHSK即可以运行在私有思科容器平台和AWS的EKS平台上,也可以运行在任何私有云或公有云的IaaS环境下。
思科CHSK为了实现 “1+1大于2”的效果,在AWS平台上,还集成了AWS身份和访问管理(IAM)服务和思科的云服务路由器(CSR)1000v虚拟路由器。后者可以在任何平台的VM中运行,设计初衷是优化在Cisco HyperFlex/UCS硬件上运行。
思科基于AWS的Kubernetes的混合解决方案(source:Cisco)
与Oracle不同的是,购买思科一套标准入门级配置的CHSK纯软件,每年最低起价约6.5万美元,还要外加AWS上EKS集群和弹性块存储(EBS)的资源使用费用。尽管思科与AWS IAM的整合颇具吸引力,但这样的定价策略很可能将潜在客户限制在已经是思科网络客户的大型企业IT服务商。
“LIFT-AND-SHIFT” VS “MOVE-AND-IMPROVE” VS……JAVA?
“提升和转移”适用于迁移已经在虚拟机中运行的应用程序,只要是可移植的VM即可,包括VMware和KVM等。
与之相反的策略是“移动和改进”,意思是花时间重构应用程序,将应用重写为云原生的微服务,用相同的过程成果(和原始程序相同的结果或报错)来验证重构和重写过程。其目的是,通过前期较大的投入,实现应用与云上资源的最佳匹配,节省非云原生软件后期的高昂运营成本。按CNAB规范编写云原生应用就是移动和改进的案例。
对于采用Java语言写的应用,还有另一种选择,即Java提供的一种将应用从Java运行时轻松移植到容器的方法。目前,Java依然还是最流行的应用编程语言之一。我们所说的Java市场,包括了Oracle Java Platform Standard Edition(Java SE)和Enterprise Edition(Java EE)。
Java SE应用程序可以在Helidon.io封装的容器中运行。但要求应用运行的环境是Java SE 8或OpenJDK8和Apache Maven构建的。此外,AWS也构建了自己的OpenJDK8环境服务,称为Corretto。AWS表示,Corretto是Oracle Java SE的一个可选替代方案。目前,这个服务已经在AWS内部的交付生产中使用,在客户预览视图中可以看到这个服务。
Java EE爱好者一定记得,在今年(2018年)稍早的时候,Oracle向Eclipse捐赠了Java EE,这使得Java EE就变成了开源Eclipse Jakarta EE工作组。Jakarta EE将被设计成完全等同于Java EE 8的云原生版本,支持微服务部署,与Kubernetes等云原生应用集成。使企业开发人员能轻松地将Java EE应用程序移植到Kubernetes平台。我们再看看Eclipse的成员企业,战略成员包括CA(现在的Broadcom)、IBM、Oracle、Red Hat和SAP,Eclipse解决方案成员包括Canonical、Docker、谷歌、华为、英特尔、微软和Salesforce.com。这简直是一个令人震惊的云供应链和服务供应商列表。让Java开发人员感觉,或许在2019年的某个时候,不用多麻烦就可以轻松地将大量Java SE和Java EE业务应用程序迁移到成本高效的云本地环境中。
戴尔科技和VMware
有趣的是,VMware将思科、戴尔、戴尔EMC、富士通、日立、惠普和联想列为全球联盟伙伴。但思科、惠普和联想是戴尔EMC在全球各个服务器市场的直接竞争对手。
8月份,VMware在VMworld上宣布 “Project Dimension”项目。这是一个VMware、戴尔EMC和联想共同参与的联合项目。目的是在客户的IT环境里,一个专门构建和验证的硬件集群上,运行VMware vSphere和vSAN,以及VeloCloud的NSX SD-WAN软件的平台,并可以桥接到AWS上VMware Cloud平台。目前, VMware、戴尔EMC和联想正在测试这个联合项目。
AWS Outposts 上的VMware Cloud 架构(source:AWS)
AWS云上VMware Cloud(AWS Outposts)的核心是VMware的软件定义数据中心(Software defined datacenter,SDDC)。SDDC基于VMware云基础架构:vSphere、vSAN、NSX和vCenter Server。VMWare的现有客户也可以在他们自有的服务器环境中运行这些基础软件,实际上已经有客户这样做了(估计是运行在品牌服务器厂家OEM的最新超融合硬件设备上)。客户也可以将环境升级成AWS Outposts定制设计的硬件,以按需购买EC2裸实例的方式,在自有IT环境中运行AWS云上的VMware Cloud 。
VMware将AWS、谷歌、IBM、微软和甲骨文列为全球战略技术合作伙伴。然而,AWS与VMware联合发布了基于AWS Outposts的VMware Cloud。这意味着VMware的所有公有云伙伴关系已经不再平等。AWS涉足私有云后,他的分量甚至超过了其他公司的总和。依据如下:
谷歌GKE私有版和IBM ICP是纯软件产品,因此只能与VMware云基础软件竞争。
微软Azure Stack根本不支持VMware虚拟机,而且也没有这样做的公开路线图。Azure Stack与VMware云基础软件分别适用于不同的场景。
Oracle和AWS正直接争夺数据库企业级客户。Dell,VMware均是AWS的紧密战略合作伙伴,而甲骨文则不是。