随着现代容器化应用陆续被各大企业发现并认可,主要供应商开始提供容器基础设施和管理 "即服务 "只是时间问题。
根据Flexera最新的2020年云计算状态报告,容器的使用在全球企业中稳中有升,65%的组织表示他们使用Docker容器,58%的组织以某种方式使用Kubernetes编排系统。
缺乏资源和专业知识经常被认为是使用容器构建和维护应用程序的主要挑战。因此,开发人员越来越多地转向容器即服务(CaaS)产品提供的自动化,这一点也不奇怪。
容器即服务,或称CaaS的定义
通过CaaS,云厂商基本上提供了一个托管的容器编排引擎(通常基于超级流行的Kubernetes开源项目,该项目起源于谷歌)来部署和运行容器,管理集群,自动扩展和故障管理,并维护共同的基础设施层,包括治理和安全。
一般来说,所有的网络、负载均衡、监控、日志、认证、安全、自动缩放和持续集成/持续交付(CI/CD)功能都由CaaS平台负责。
这使得企业能够充分利用云基础设施的优势,同时有助于避免典型的平台即服务(PaaS),如AWS Elastic Beanstalk、Azure App Service或Google App Engine所带来的任何供应商锁定,因为容器本身允许在各种环境中进行简单的移植。
如果容器是你想要的方式,那么CaaS和运行在经典的基础设施即服务(IaaS)上的区别,就在于你的组织是否有资源和技能来实施和管理Kubernetes(或其他容器协调层),或者将其交给云提供商来管理。这个决定还可能取决于你的容器环境是否必须跨越多个云和/或内部环境。
许多供应商提供的CaaS平台可以在内部部署或在云中部署(见下文)。"你可以在基础设施层面管理事情,自己设置编排器,也可以使用容器平台处理底层基础设施,并提供一个预装的编排器,为你部署和扩展容器做好准备"。前德意志银行和BBC开发者Rob Isenberg在O'Reilly出版的《Docker for Rails Developers》一书中写道。
优点
在CaaS上运行容器类似于在IaaS上运行虚拟机。主要的好处是部署速度快、使用方便,以及现收现付云模式的简单性和上述摆脱供应商锁定的自由。
通过将容器基础架构交给云供应商,您可以在不投资自己的硬件,也不需要构建和运行自己的Kubernetes集群(或其他容器协调系统)的情况下启动和运行。
此外,通过容器化应用程序,你可以更容易地将应用程序迁移到不同的环境或供应商生态系统中,从而提供更大的灵活性和可扩展性选择。
所有这一切还具有那些最重要的成本效率机会,因为容器能更好地根据需求进行横向扩展,使企业只需为其使用的云资源付费。容器比虚拟机轻巧得多,这意味着它们的资源密集度更低,往往会带来速度的提升和成本的降低。
另一个好处来自于仪器和日志的一致性,因为在容器中隔离单个服务可以通过流行的sidecar部署模型实现更有效的日志聚合和集中监控。
将传统应用迁移到容器仍然是一个重大的障碍,即使是在CaaS上运行,正如Flexera的云计算现状报告中34%的受访者所提到的那样。迁移到容器往往涉及将单体应用分解为微服务,对于规模较大、历史较长的组织来说,这可能是一个重大的文化和技术转变,不应轻视。
领先的供应商选择
大多数主要的云提供商都有CaaS产品,还有一些其他提供商也希望参与其中。云服务市场领导者亚马逊网络服务(AWS)的Kubernetes无弹性容器服务(ECS)和弹性Kubernetes服务(EKS)的采用率很高。同样,根据Flexera的分析,Azure Kubernetes Service的采用率也大幅上升,谷歌Kubernetes Engine(GKE)也是如此。
目前,三大云巨头也都提供了无服务器的Kubernetes服务,其中AWS ECS在Fargate上,Google Cloud Run在GKE上,Azure Container Instances也是如此。与EKS、AKS和GKE不同,这些服务免去了执行服务器管理任务的需要,是按需消费用例的理想选择。
谷歌云的大部分容器管理功能现在都在Anthos的保护伞下,它可以跨内部基础设施和主要的公共云(现在是谷歌云平台和AWS,Azure的支持也在路上)管理基于容器的应用程序。
Anthos结合了用于云工作负载的GKE、GKE On-Prem和Anthos Config管理控制台,它允许在混合和多云Kubernetes部署中进行集中管理、策略和安全。
除了 "三大 "云厂商外,包括IBM/红帽、VMware、SUSE/Rancher、Canonical、D2iQ(原Mesosphere)、Rackspace、Oracle、HPE、阿里巴巴、华为和腾讯在内的厂商都有某种程度的托管CaaS选择。其中一些产品可以在内部部署,也可以在公共云中部署,或者两者兼而有之。
哪个平台是最好的?
行业分析机构Gartner并没有为CaaS提供商设立魔力象限,但在其最新的竞争格局, Wataru Katsurashima的《公有云容器服务报告》中,它将谷歌的GKE确定为领先的托管Kubernetes选项。
Forrester的分析师在2019年第三季度将AWS置于其最新的公有云企业容器平台新浪潮中的领先地位,微软和谷歌只是在后面。
需要注意的是,Forrester的报告只统计了7家厂商,并且严格关注公有云部署,但,根据Forrester作者Dave Bartoletti和Charlie Dai的说法,AWS"在部署选项、安全性和深度集成方面处于领先地位"。"凭借广泛的完全管理(和无服务器)Kubernetes(K8s)消费选项,以及直接部署到其云基础设施的最多容器,AWS继续创新并将其容器平台与其领先的安全和网络功能深度集成"。
Forrester报告敦促微软和谷歌简化其容器平台。“微软因其更强大的开发者经验和全球影响力而受到称赞,但却因其复杂性而受到打击”这是报告中常见的一句话。谷歌因其深厚的Kubernetes专业知识和穿越多云环境的努力而赢得赞誉,但同样因复杂性而受到批评。
尽管如此,根据2019年CNCF调查,AWS EKS仍然是最常用的容器管理平台,GKE、Docker EE/CE和AKS紧随其后。
Flexera的《2020年云计算现状报告》将企业对AWS EKS/ECS的使用率定为55%,另有23%的企业受访者计划在未来使用这些CaaS选项。Azure Kubernetes服务的采用率达到50%,另有26%的企业计划在未来使用AKS。而Google Kubernetes Engine达到了26%,27%的企业受访者计划使用GKS。
然而,根据Flexera的报告,自管理Kubernetes仍然超过了所有选项,占企业受访者的63%。关于CaaS的主要信息来源是供应商本身,因此很难做出明智、公正的选择。
如上文所述,Forrester和Gartner都对这一领域进行了深入研究,但他们的视角通常是关注哪些厂商脱颖而出,而不是如何在生产中加快CaaS的速度。