随着容器编排引擎Kubernetes的成熟与流行,容器化已经开始在IT界尤其是云计算领域得到广泛应用。与此同时,Serverless正逐渐成为继容器之后的下一个技术潮流。因此,很多企业面临Kubernetes和Serverless之间的两难抉择。为了解决这个问题,百度智能云新推出容器实例产品BCI,将建立这两者的链接,为用户提供最大的灵活性和便利性。

那么,该产品是如何诞生的,技术特性是什么?我们还是从容器说起。

1

高歌猛进的容器技术

自从2013年Docker技术和Kubernetes编排引擎问世以来,容器技术一路高歌猛进,逐渐成为了今天绝大部分企业IT架构的转型方向。容器为企业带来的架构优化和效率提升是显而易见的,利用Docker image轻量级、可移植的特点,将业务拆分解耦到不同的容器中,分布式部署至跨机器甚至跨机房的基础设施。

由于每个容器都可以被独立管理和升级并且快速在不同的基础设施之间迁移,容器化大大提高了IT生产流程的敏捷程度并且帮助企业获得更高的业务可用性。

但是容器也并非是万能的,随着容器的数量和复杂度增加,用户需要维护一个庞大的集群和编排系统来进行容器管理,这就需要企业付出一定的额外资源用于维护集群本身,并且对于编排系统(如Kubernetes)的使用也是IT部门需要面临的一个新的挑战。

云服务商一直在尝试利用云计算的优势降低容器的使用成本和技术门槛,如百度智能云的容器引擎产品CCE,能够帮助用户快速搭建和维护一个Kubernetes集群,为用户解决集群本身的可用性、可观察性以及对底层资源的兼容性等问题,同时使得原生的Kubernetes API能够以对用户更加友好的方式被使用。

2

新起之秀:Serverless

Serverless是继容器之后出现的又一个技术趋势,以云服务商提供的函数计算服务为典型代表(如百度智能云函数计算CFC),其核心思想在于服务提供者完全打包了基础设施的搭建、管理与维护,开发者只需要编写业务代码并选择一个所需的运行时,然后平台自动化地完成资源的创建、调度以及运行时的生命周期管理,并由平台保障业务运行环境的高可用性。

函数计算服务对于小型应用的开发者而言非常友好:

  • 不需要提前采购和管理任何服务器,几乎为0的启动成本和运维成本。
  • 无需关心资源的扩容与缩容,函数可以在毫秒级完成启停,带来了更高的业务弹性。
  • 完全按需的付费模式,资源只有在业务实际运行时才产生费用,不会再有闲置成本。

在许多轻量级场景中,函数计算已经得到了不错的应用与实践,比如小程序、智能设备、自动化数据处理等。

但是函数计算同样不能解决企业的全部问题,它要求用户的业务以函数为粒度进行拆分、函数之间完全通过接口通讯并且对业务的无状态化要求更高。对于复杂的业务系统而言,要满足这些要求并不简单,而且即便用户的业务架构可以真正实现函数化改造,现有的大规模函数协作、编排和管理技术也还不够成熟,很难完全投入生产。

在面对容器化和Serverless时,用户通常需要对业务进行拆分,根据业务属性选择更合适的架构,有时会因此而面临两难的技术抉择。

那么有没有一种技术可以在充分发挥容器编排引擎优势的同时,又享受到Serverless带来的低成本和高弹性呢?

3

鱼和熊掌也可兼得

Kata-Container和Virtual-Kubelet这两个新技术的发展为这个问题带来了新的思路,而百度智能云基于两者提供的新产品:百度智能云容器实例(Baidu Container Instance — BCI),也许会是一个不错的答案。

  • Kata-Container:作为一种启动docker的插件,为容器提供了更强的隔离性,解决了多租户情况下容器的安全问题。
  • Virtual-Kubelet:CNCF 社区项目,帮助用户将kubernetes的管理范畴从物理集群拓展到任意的容器提供者。

BCI为用户提供了可以直接启动的容器化资源,不需要预先购买服务器和集群,用户在业务需要时可以随时启动一个或多个容器,在业务完成后可以随时将其释放。

相比虚拟机,BCI充分发挥了容器化的优势,使用标准的Docker Image启动、细粒度的资源划分、在数秒内完成启动或停止、随时进行多副本复制。

对于小型应用的开发者,BCI可以体现出媲美函数计算的Serverless特性。将应用打包到Docker image中,即可启动或停止容器,只需要为应用运行实际消耗的资源付费,也完全不需要关心底层资源如何管理和调度,而kata-container技术则完全确保了用户容器运行过程中的资源隔离性。

对于有复杂容器编排需求的企业,BCI可以通过Virtual-Kubelet接入到CCE集群中,从而成为用户集群中的一个虚拟节点,这个虚拟节点几乎没有资源边界,用户也无需为它预先购买任何服务器。用户可以使用标准的Kubernetes API管理自己的容器(比如创建Deployment),通过指定部署节点,将业务容器部署到BCI容器实例中运行。

BCI的出现将建立起容器和Serverless之间的链接,大大拓展百度智能云CCE的管理边界,为用户提供极大的便利和灵活性。