在公有云最开始普及的时候,它的提供者们在短时间内几乎把“即服务”附加到了所有可以想象的东西上,来表明具体的应用、服务或基础设施组件都可以设计到云上运行。因此出现容器即服务,或者叫CaaS这样的东西也并不会奇怪,它指的是一种基于云的容器环境。
不过CaaS不仅仅是一种营销方式,它的内容比这还要多一些。
下面,我将会介绍CaaS意味着什么,以及为什么它是有价值的。
CaaS的独特之处
容器即服务的产品在一般情况下不单是为了向IT专业人员提供在云上运行容器化应用的方法。每个云提供商都可以创建自己的CaaS风格—而且有一些CaaS平台不能在主流的公共云上运行。
CaaS服务商们一般会在两个主要领域发力,让其产品具有独特性。其一是用户界面,本地容器环境往往是通过Docker命令行进行管理。但是有一些IT专业人员会更倾向于使用基于GUI的管理界面而非命令行。因此,一些云提供商会向用户提供简单友好的用户体验,让用户可以简便、甚至一键地创建及管理容器。
CaaS服务商之间的第二个关键区别之处是编排,以及附加到编排引擎上的额外服务。例如,服务商可以使用编排引擎实现对容器化工作负载的自动缩放,这是根据管理员建立好的参数来确定的。同样,云服务商的编排引擎可以用于处理容器生命周期的管理工作,或者创建与容器相关的报告。
这里需要注意的是,公共云容器服务在选择编排器上可能不太灵活。例如,Microsoft Azure要求你在DC/OS、Kubernetes和Swarm之间进行选择,而且并没有其他的选项。相比之下,其他的容器管理平台,像Rancher则是模块化的设计,并不会限制你使用一些预定义的选项。
使用CaaS的优势之处
CaaS带给用户的一些好处和容器类似,不过CaaS在至少两个方面有额外的优势。
其一是CaaS使得在云上运行应用程序比其他情况下运行起来要容易得多。一些针对本地使用而设计的应用程序,把它们安装到基于云的虚拟机上时,这些程序并不能确保一直稳定运行。不过,由于容器的程序可移植性,用户可以创建应用程序容器,在本地测试新的容器化应用,然后将该应用程序上传到公共云。容器化的应用程序应该能够像在本地一样在云上工作。
而另一个好处是,使用CaaS可以让组织实现更大程度的敏捷性。敏捷性是一个已经在IT界过度使用的词,甚至已经失去了它本来的意义。然而,我倾向于把“敏捷性”理解成是一种尽可能快地推出新的生产负载的能力。而根据这个定义的话,CaaS毫无疑问能够在这一方面提供极大帮助。
试想一下,一个组织的开发人员正在搭建一个新的应用程序,并且迫切地需要推出这个应用。开发人员当然可以对应用程序进行容器化,可是如果组织还没有把容器投入到生产中该怎么办?说得轻一些的话,如果组织的容器环境缺少托管应用程序的能力,会发生什么?
这就是CaaS真正发挥用途的地方了。公共云服务商通常只需要你点击几下鼠标就可以部署容器环境。这省去了像部署容器主机、搭建集群、或测试容器基础设施这样耗时的工序。云服务商自动化地为它的用户提供容器环境,而这些环境都是已经被证明是正确配置的。这种自动化服务消除了耗时的设置和测试过程,也因此让组织几乎可以马上开始推出容器化的应用程序。
多云解决方案
尽管人们很容易认为CaaS仅仅是云提供商向其客户提供的服务,但对组织来说,在多个云上托管容器已经愈发普遍。这样做还可以帮助提升弹性能力,实现负载均衡。
然而,将容器托管在多个云中也会带来与跨云容器管理和跨云工作负载伸缩相关的重大挑战。当然,这些挑战可以通过使用管理工具来解决,比如Rancher开源容器管理平台,就可以同时管理本地和云上的容器。