简介:(本文选自《Kata Containers在百度智能云的应用实践》白皮书) 之前的《容器化实践指南》专栏中,我们介绍过很多百度智能云在容器实践方面
今年4月,Kata Containers被OpenStack基金会董事会正式宣布为OpenStack基金会的顶级开源基础设施项目。
事实上,Kata Containers早就出现了,百度智能云也较早就开始运用了。简单而言,Kata Containers就是比传统容器更安全的容器技术,其通过为容器提供虚拟机级别的安全机制,从而同时拥有容器的形态和虚拟机的安全性。 本篇就Kata Containers是什么,有什么价值等进行全面梳理。
(Kata Containers原理)
(传统容器架构)
于是,百度智能云在ClearContainers,也就是现在的Kata Containers发布之后,就开始关注这一安全容器技术,并和相关技术社区进行了多次交流,来调研和测试这一技术。基于广泛的安全容器技术调研,发现Kata Containers是目前具备高度安全和实践性的一项安全容器技术,主要考量因素如下: Kata Containers是目前高度安全的容器技术。它使用轻量级虚拟机作为容器的安全隔离,而过去十几年的实践证实,虚拟化技术采用的安全模式,是人们共享资源的有效手段。
截至当前,百度智能云已经将KataContainers应用在多种实践场景,包括基于Kata Containers的函数计算,Kata Containers与OpenStack的融合,Kata Containers在边缘计算的应用等。
(非预创建容器流程)
冷启动性能根据用户代码体积会有不同程度的浮动。如果不考虑VPC的切换时间,启动时间需要控制在百毫秒量级。 那么为何冷启动性能这么重要呢? 原因在于上层业务代码的访问超时值是统一设置的,不会为了某次CFC函数调用是冷启动还是热启动而去做动态调整。假如业务的超时设置较小,冷启动的长耗时很容易导致业务有损。根据测试,单纯Kata Containers的启动时间就已经在1s 左右,如果再加上网络CNI的初始化,启动时间会更长,难以满足函数计算的需求。 目前,百度智能云给出的解决方案是通过预先创建Pod池来实现快速响应。 在需要运行用户函数时,从Pod池中获取一个Pod。在该Pod中动态添加业务容器,来执行计算任务。通过这种办法,节省掉了虚机启动时间和网络CNI插件初始化时间,进而大幅度缩短整体冷启动的响应时间。下表比较了不同模式下业务冷启动时间。 可以看到,函数计算在利用kata container提供更好安全隔离性的同时,仍将冷启动时间压缩到了与runc相当的数量级上。
业务启动时间优化对比
(在runc模式下,动态初始化仅包含挂载卷,在kata模式下,动态初始化包含动态创建业务容器并运行等操作) 这样的示例还有很多,比如调度层启动加速、支持动态挂载用户代码等。这些无疑将为后来的使用者提供宝贵的借鉴意义。 2019开源基础设施峰会超级用户大奖 正因为有以上创新和在BCI产品体系中的落地,在前不久召开的开源基础设施峰会中,百度智能云团队荣获2019开源基础设施峰会唯一超级用户大奖。 此奖项代表着百度智能云Kata Containers获得业内顶级专家的认可,并在实践中逐步走向成熟,成为该领域技术创新的先驱者。使用Kata Containers带来的收效是明显的。无论是函数计算还是边缘计算,抑或是其它场景,基于Kata Containers技术都带来了极大的提升。 以百度智能云函数计算CFC为例,百度智能云CFC可以通过一个弹性资源池为众多开发者提供共享的计算资源。在采用Kata Containers的虚拟机隔离模式之后,既保障了容器在多租户环境中的安全隔离,同时也实现了对应用和用户的不可见。 同样,百度智能云容器实例BCI为百度内部的大数据业务提供了强大的基础架构支撑,帮助大数据部门构建起面向多租户的Serverless数据处理平台。 对于大数据部门的平台研发人员,BCI通过与Kubernetes的集成,满足平台研发者使用成熟的Spark社区技术的诉求,而无需额外的学习成本,且不需要关注资源的管理和运维。 对于使用平台的大数据开发者,基于BCI的大数据任务处理平台提供了更加便捷的Spark使用模式,开发者只需要打包数据处理任务,提交至平台,即可等待任务自动运行并获取结果,完全无需关心资源的调度过程,并且不需要自行维护任何Spark基础架构。 在这种多租户的大数据平台场景中,Spark服务的提供方希望尽可能提升资源利用率,同时提供满足用户大规模提交计算任务时的算力。 然而,传统的Kubernetes集群模式很难具备足够弹性,满足这一需求。因此,无需维护服务器,且能在数秒内快速启动的容器实例就成为了平台方的首选方案。 通过使用BCI
平台方的任务编排服务可以运行在自己的Kubernetes集群中,而用户提交的任务则通过Virtual-Kubelet,调度用户账号中的BCI资源来运行,一方面平台方的使用模式和传统kubernetes没有差异,另一方面平台方无需为用户任务提前准备资源,这无疑提升了资源利用率。
而Kata Containers则基于底层技术,让用户作业可以运行在隔离的系统内核和隔离的网络空间中,从而为任务执行和数据提供了更高的安全性。 目前,基于Spark的百度流式计算服务BSC已经集成BCI的Serverless容器能力,可以将原本搭建Kubernetes集群的资源成本降低40%~60%,同时还可以获得大量宝贵的平台搭建实践经验。 总结全文,Kata Containers作为一种安全容器解决方案,在百度智能云的容器服务中扮演重要角色。 未来,百度智能云还将继续深化对Kata Containers的使用,为用户提供更优质的容器服务,为推进数字化转型进程添砖加瓦。