首页 行业 最新信息 查看内容

大热的Kata Containers技术,百度智能云是如何运用的?

2019-11-26 02:01| 发布者: | 查看: 20| 评论: 0

摘要:   之前的《容器化实践指南》专栏中,我们介绍过很多百度智能云在容器实践方面的积累。本文继续,讲一讲最近才进入大众视野的 Kata Containers。  今年 4 月,Kata Containers 被 OpenStack 基金会董事会正式宣布 ...

  之前的《容器化实践指南》专栏中,我们介绍过很多百度智能云在容器实践方面的积累。本文继续,讲一讲最近才进入大众视野的 Kata Containers。

  今年 4 月,Kata Containers 被 OpenStack 基金会董事会正式宣布为 OpenStack 基金会的顶级开源基础设施项目。

  事实上,Kata Containers 早就出现了,百度智能云也较早就开始运用了。简单而言,Kata Containers 就是比传统容器更安全的容器技术,其通过为容器提供虚拟机级别的安全机制,从而同时拥有容器的形态和虚拟机的安全性。 

  本篇就 Kata Containers 是什么,有什么价值等进行全面梳理。 

  一、初识 Kata Containers

  早在 2015 年,来自英特尔®开源技术中心的工程师就开始探索采用英特尔® 虚拟技术(英特尔® Virtualization Technology,英特尔® VT)来提高容器的安全隔离性,并以此发起了英特尔® Clear Containers 开源项目。

   与此同时,来自 Hyper.sh(一家中国的高科技初创公司)的工程师也发起了 runV 开源项目,这两个项目采用的技术和目的都非常相似,都是为了将容器置于一个安全“沙箱”,以便进一步促进该技术发展和成熟。随后在 2017 年,英特尔®和 Hyper.sh 团队将这两个开源项目在社区合并成了一个新的项目 Kata Containers。 

  传统虚拟机(VMs)可提供硬件隔离,而容器可快速响应,且占用空间相对较小,Kata Containers 将这两者的优势完美结合了起来。每个 container 或 container pod 都在自己单独的虚拟机中启动,并不再能够访问主机内核,杜绝了恶意代码侵入其它相临容器的可能。 

  由于 Kata Containers 同时具备硬件隔离,也使得互不信任的租户,甚至于生产应用或前生产应用都能够在同一集群内安全运行,从而使得在裸机上运行容器即服务(Containers as a Service, CaaS)成为可能。


Kata Containers 原理

  二、提高性能的同时保证安全性是难题

  百度智能云容器引擎发展至今,可以说经历多多,包括复杂业务、大流量、复杂部署等诸多方面的技术考验和淬炼。例如:

  单集群峰值每日网页访问量达 10 亿+,单租户容器规模 50000+ 等。

  在不断地学习过程中,练就了以 Kubernetes 为中心的容器技术方向的强大掌控力。 

  不过现实困难也是存在的,比如基于容器技术实现资源共享在带来业务弹性和资源高利用率的同时,也会增加业务的安全风险几率。此类风险在于同一主机上的多个容器需共享同一个主机内核,而同一宿主机上可能运行不同租户的容器,这就可能会威胁到整个云基础架构和租户业务及数据的安全。 

  因此,如何在充分发挥容器轻量化和敏捷性的同时,提高其容器隔离性来保障资源共享的安全,就成为百度智能云必须探索的重要课题。


传统容器架构

  三、Kata Containers,更好的选择

  于是,百度智能云在 ClearContainers,也就是现在的 Kata Containers 发布之后,就开始关注这一安全容器技术,并和相关技术社区进行了多次交流,来调研和测试这一技术。基于广泛的安全容器技术调研,发现 Kata Containers 是目前具备高度安全和实践性的一项安全容器技术,主要考量因素如下:

   Kata Containers 是目前高度安全的容器技术。它使用轻量级虚拟机作为容器的安全隔离,而过去十几年的实践证实,虚拟化技术采用的安全模式,是人们共享资源的有效手段。

  和传统容器相比,Kata Containers 的性能较高,且更有保障,同时又兼容传统安全技术。

  Kata Containers 遵循 OCI 容器实现规范,可以无缝对接容器编排方案,比如 Kubernetes 等。 

  Kata Containers 有着较高的成熟度。自从 2015 年成功推出的两个安全容器项目——英特尔® Clear Containers 和 Hyper runV——合并以来,相关技术有了重大进展,其功能性和开发基础设施也得到了验证。 

  Kata Containers 获得业界的广泛支持,具备完善活跃的开源社区。基于此,百度智能云开始大规模应用 Kata Containers。 

  截至当前,百度智能云已经将 KataContainers 应用在多种实践场景,包括基于 Kata Containers 的函数计算,Kata Containers 与 OpenStack 的融合,Kata Containers 在边缘计算的应用等。

  四、不仅仅是用,还在创新

  在 Kata Containers 的应用过程中,百度智能云不只扮演的是用户的角色,还是一个创新者。

  以函数计算为例,由于 Kata Containers 采用虚拟机作为隔离,导致容器的启动速度难以满足函数计算场景的要求。为解决这一问题,百度智能云开发出了许多高效的解决方案。 举个例子,函数冷启动与热启动性能。

  函数的冷启动,如图所示,是指函数首次被调用时,必须先准备用于运行的容器,再把用户函数部署上去,然后启动语言 runtime。


非预创建容器流程

  冷启动性能根据用户代码体积会有不同程度的浮动。如果不考虑 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 的使用,为用户提供更优质的容器服务,为推进数字化转型进程添砖加瓦。

  本文选自《Kata Containers 在百度智能云的应用实践》白皮书。


鲜花

握手

雷人

路过

鸡蛋
毒镜头:老镜头、摄影器材资料库、老镜头样片、摄影
爱评测 aipingce.com  
返回顶部