1.多租户安全。在云原生多租户场景中,安全容器可以防止恶意租户对主机内核的直接攻击,并显着降低机器上其他租户的风险,从而使公有云服务更加稳定。
2. 不同SLO的容器混合部署。安全容器的强隔离减少了容器之间的性能影响,从而可以为具有不同SLO优先级的共置实例创建更稳定的技术解决方案。 RunC方案用于延迟敏感的在线服务,比较大数据类别的资源需求。针对峰谷差较大的线下业务的安全容器解决方案,避免了线下业务突发流量对线上业务的影响,同时线上线下业务共置,进一步减少了计算资源的浪费和成本消耗。
3、可信和不可信容器混合部署。可信代码在runC容器中运行,不可信代码在safe容器中运行。两者混合在同一主机上,以减少不受信任的容器造成危害的可能性。
基于这些优势,安全容器在虚拟化上追求极致的轻薄,使得整体资源消耗和弹性能力接近runC容器方案,从而达到Secure as VM、Fast as Container的技术目标。
二、Kata 的发展
在2018年5月的Kata 1.x阶段,Kata和containerd社区共同制定了shimv2接口规范,并率先在Kata Containers中支持该规范。 2018年11月,Kata通过containerd-shim-v2和vsock技术,精简了大量组件。凭借轻量级虚拟机管理程序和简化的内核,Kata 可以显着减少内存开销和容器启动时间。更重要的是,降低系统部署复杂度也大大提高了稳定性,尤其是在系统过载的情况下。
(图1/Kata 1.x架构图)
2019年,Kata从1.x升级到2.x,取得了非常重要的技术进步。 Kata-agent 使用Rust 进行了重构,大大减少了内存开销和整体攻击面。
通过2.x版本,Kata逐渐从构建架构、使用开源组件构建原型的快速成长路径,逐渐走向名气并走向影响上游社区技术迭代的成熟路径。 Kata的整体架构在2.x版本已经趋于成熟。后续的开发需要开始思考和优化专用组件,从而以局部影响整体来进一步提高Kata的能力。例如,在2.x 中使用Rust 重写Kata 代理减少内存开销就是一个很好的例子。
在Kata快速发展的这几年里,阿里云内部一个名为“袋鼠”的团队一直在基于Kata打造云原生场景的秘密武器。
三、袋鼠云原生底层系统
为了解决云原生带来的高密度、高并发等技术问题,阿里云花费多年磨练了一套袋鼠云原生底层系统。 Kangaroo的安全容器解决方案基于Kata Containers项目,并向更极致的方向进行了深度优化。 Kangaroo的优化包括使用Rust重写Kata Container 2.0的go运行时,以进一步减少容器运行时的内存。开销,并专门为Kata Container 开发了针对容器场景进行深度优化的轻量级虚拟机管理器Dragonball。通过容器运行时与虚拟机的一体化设计,将Kata的整体体验提升到了一个新的水平。
那么Kangaroo Secure Containers 提供哪些功能?
简而言之,它是高密度和灵活性的极致。
Kangaroo Secure Containers 可以在6 秒内弹出3000 个安全容器,并且可以在一台机器上同时运行超过4000 个安全容器。通过袋鼠,我们成功支撑了阿里云函数计算FC业务日调用量近120亿次,以及弹性容器实例ECI业务日创建量最高超过百万条,显着提升了业务的核心竞争力。极限性能。除了极致的性能之外,我们还通过使用安全容器进行主机托管,节省了大量的资源成本。
Kangaroo内部的成就与Kata社区的发展息息相关,因此Kangaroo也决定将多年来内部打磨的系统回馈给Kata社区,共同推动Kata社区的进一步发展。
四、Kata 3.0:袋鼠与 Kata 的一场碰撞
在云原生场景下,业界对容器启动速度、资源消耗、稳定性等要求越来越高,这也是安全容器相对于普通容器面临的挑战。就像多年前runV和Clear Containers的互动一样,顶级项目Kata Containers诞生了。多年后的今天,袋鼠和卡塔碰撞在一起。 Kangaroo将基于Kata社区开源其内部系统,并已在在线生产环境中向Kata社区进行了测试。帮助Kata社区结构升级到3.0版本,改善Kata的整体用户体验、资源消耗、启动速度和稳定性。
综上所述,在Kata 3.0版本中,我们添加了以下新设计:
为了减少适配不同VMM的复杂过程,获得开箱即用的安全容器体验,我们提供了内置的基于容器场景深度优化的龙珠沙箱。 《龙珠》将为Kata安全容器生态下的虚拟化提供最优解决方案。 (当然,Kata 3.0的可扩展架构也支持用户通过配置选项使用其他VMM,做出符合实际需要的决策。)为了达到高性能、低资源利用率、内存安全、高并发的目标,我们为Rust 运行时实现了异步新技术。为了支持不同的服务、运行时和虚拟机管理程序,以及添加对机密容器的支持,为Wasm 等未来方向留出空间,我们在运行时内提供了一个可扩展的框架来实现这一目标。为了统一容器和沙箱资源的生命周期管理机制,我们提供了Resource Manager机制来实现这一目标。
五、设计介绍
(图2/Kata3.0架构图)
5.1 内置VMM龙珠

Dragonball沙盒是为Kata量身定制的基于KVM的轻量级VMM。除了支持常规的Hypervisor功能之外,它还针对容器工作负载做了一些优化:
基于Nydus2开源项目的容器镜像管理和镜像加速服务具有可扩展性、高性能虚拟设备驱动、CPU内存开销低、单个虚拟机启动速度快、多个虚拟机并发启动速度快等特点。为什么我们需要内置VMM?
(图3/Kata2.x版本Runtime和VMM架构图)
如图所示,在Kata2.x之前,Runtime和VMM是独立的进程。运行时进程分叉VMM 进程并通过RPC 进行交互。通常,进程之间的交互比进程内的交互消耗更多的资源,导致效率相对较低。同时,还必须考虑资源运维成本。例如,在异常情况下回收资源时,进程中的任何异常都必须被其他组件检测到,并且必须激活相应的资源回收进程。如果存在额外的进程,恢复就会变得更加困难。
另外,不同版本的Kata还需要考虑对不同版本VMM的适配问题。 VMM版本的落后或升级可能会导致Kata适配出现问题,需要用户花费额外的精力来调整版本和配置。
最后,尽管安全容器已经成为业界多SLO混合/公有云多租户问题的标准解决方案,但仍然没有定位于支持安全容器生态系统的VMM。其他VMM在不同领域都有自己的定位。比如QEMU,能力很全面,但代码量已经突破百万行。整体启动速度和资源消耗过高;虽然Firecracker极其轻薄,但很多虚拟化能力都是为了轻薄而做的。减法无法支撑安全容器复杂多变的场景需求。
多进程交互问题、复杂运维问题、VMM版本适配问题、安全容器虚拟化的缺失,都指向了一个共同的答案:——。我们需要一个专注于安全容器场景的VMM,在安全容器中提供虚拟化生态系统。优化解决方案。龙珠VMM 附带了这个任务。在Kata3.0中,我们将提出一个内置于Kata生态系统中的龙珠VMM。未来它将与Kata一起成长,解决上述这些历史问题。后续我们还会有专门的文章介绍龙珠,敬请期待。
如何支持内置VMM?
我们提供Dragonball 沙箱,它通过将其功能集成到Rust 库中来启用内置VMM。我们可以使用这个库来执行VMM相关的功能。由于Runtime和VMM在同一个进程中,因此在消息处理速度和API同步方面都有优势。同时,还可以保证运行时和VMM生命周期的一致性,减少资源回收和异常处理维护,如图4所示:
(图4/Kata3.0内置VMM图)
5.2 可扩展框架
Rust版本的kata-runtime为Service、Runtime和Hypervisor提供了可扩展的框架,还包含了针对不同场景的配置逻辑。
在API层面,Service提供了插件注册机制,支持各种容器相关的原生服务。除了管理容器进程的任务服务之外,后续还会添加镜像服务,以及其他可以支持运维监控的服务。支持不同类型的运行时。包括基于虚拟化技术的VirtContainer、基于可信计算硬件的机密容器。后期我们会根据kata社区和行业需求考虑支持WasmContainer和LinuxContainer。对于VirtContainer 支持的虚拟机管理程序,除了内置的Dragonball 之外,还可以将Dragonball、Qemu、Acrn 和Firecracker 配置为插件。 5.3 资源管理
在我们的例子中,将有各种资源,每种资源都有相应的子类型。特别是对于Virt-Container,每种资源子类型都有不同的操作。并且可能存在诸如share-fs rootfs和share-fs卷之类的依赖项,它们将使用share-fs资源将文件共享到VM。目前,network和share-fs被视为沙盒资源,而rootfs、volume和cgroup被视为容器资源。因此,我们为每个资源抽象了一个公共接口,并使用子类操作来对应不同子类型之间的差异。
5.4 Rust 异步运行时
与Go语言相比,Rust在性能和资源消耗方面都更胜一筹,在某些特定场景下,效率甚至比C++还要好。同时,Rust还可以避免空指针、野指针、内存泄漏、内存越界等一系列内存安全问题,从而大大降低程序崩溃的频率。这些功能对于Kata 这样的低级系统尤其重要。然而,Go 语言的优势在于支持编写并发程序的内置机制和库,例如goroutine,这可以显着减少CPU 和内存开销,特别是对于具有大量I/O 密集型任务的工作负载。为了兼顾Go 语言的并发和异步优势,并获得Rust 的安全性和低开销特性,我们开发了Async Rust Runtime。
如何支持异步?
kata-runtime 由TOKIO_RUNTIME_WORKER_THREADS 控制运行OS 线程,默认为2 个线程。为了让TTRPC和容器相关的线程统一运行在tokio线程中,需要将相关依赖切换为Async,比如Timer、File、Netlink等。通过Async我们可以轻松支持non-block io和timer。目前,我们仅在kata-runtime 中使用异步。内置VMM保留操作系统线程,保证线程可控。
六、何为开箱即用?
通过提供Kata Runtime内置的Dragonball VMM来闭合整个安全容器生态系统的底层基础设施的循环,并提供可扩展的Rust Runtime来支持机密容器等不同的安全容器形式。从此用户不再需要做复杂的适配工作。他们只需要下载Kata、编译Kata 并运行Kata。一切都将变得如此简单易用。
这样的开箱即用的体验将为任何技术带来易用性、可维护性、稳定性等方面的提升,无论是对于刚刚接触Kata 并希望快速上手的初学者,还是对于工程团队商业卡塔。发展一定是朝着更纯粹、更精简的方向发展,所以我们也坚信这将是Kata安全容器生态的未来方向。
七、未来展望

7.1 Kata 3.0发展路线
目前,Kata 3.0仍处于第一阶段开发,第一阶段将完成Kata基本功能的实现。其余功能将在第二阶段和第三阶段得到支持。预计Kata 3.0的第一个alpha版本将于2022年7月25日发布。欢迎大家参与Kata 3.0的建设并试用3.0版本。
7.2 Kata 3.0发布时间
2022-07-25
预发布3.0.0-alpha0
2022-08-15
预发布3.0.0-alpha1
2022-08-29
预发行版3.0.0-alpha2
2022-09-12
预发布3.0.0-rc0
2022-09-26
预发布3.0.0-rc1
2022-10-10
发布3.0.0
龙蜥云原生 SIG
官网:https://openanolis.cn/video/B站:https://www.bilibili.com/video/BV1jB4y1D7Yf?share_source=copy_web
同时,云原生SIG将整合龙蜥社区的云原生优势,输出开箱即用的龙蜥云原生发行版,并基于用户输出大数据、主机托管等场景的解决方案需要帮助用户做出更快、更有效的决策。最好使用云原生技术来构建应用集群。 Kata作为龙蜥云原生的项目之一,未来也将联合打造基于安全容器的云原生服务。
相关链接:
[1] Kata Containers 项目链接:https://github.com/kata-containers/kata-containers[2] Nydus 项目链接:https://github.com/dragonflyoss/image-service
原文链接:https://click.aliyun.com/m/1000351845/





























用户评论
终于等到 Kata 3.0 了!一直在用低版本,这次升级确实感觉不一样,开箱即用简直太棒了,以前搭建总是各种错乱,如今轻松搞定,大大提升了效率!
有12位网友表示赞同!
作为一名长期使用 Kata 的开发者,我一直期待着这种开箱即用的体验。终于等到 3.0 版本啦!现在无论是新用户入门还是老用户升级,都变得更加简单了,安全容器的部署不再是难题。
有12位网友表示赞同!
好久没关注 Kata 了,来看看这个 3.0 新版本,确实很不一样。说“开箱即用”不夸张,以前调很多参数配置才能稳定运行,现在就几个步骤搞定了!而且安全性看起来更高了。
有17位网友表示赞同!
标题说的"迈向Kata 3.0!"有点高大上。我觉得只是小改进而已,以前也能使用啊,并没有感觉很颠覆以往体验,就是个升级而已。期待真正的重大创新吧!
有11位网友表示赞同!
多年锤炼?这个说法很有意思,好像 Kata 生成了某种文化感。安全容器的确很重要,尤其是现在网络安全越来越严峻。开箱即用的体验能吸引更多人使用 Kata,这很棒!
有9位网友表示赞同!
对于老用户来说,Kata 3.0 的升级可能不太明显,但对新手群体来说确实很友好。以前要配置各种环境才能用上,现在直接上手,学习成本下降不少。
有7位网友表示赞同!
我对“开箱即用”的定义有点模糊,难道不需要任何操作可以直接使用?还是说只是一些基础设置就够了?希望官方能解释清楚,避免误解!
有8位网友表示赞同!
我一直在寻找一款简单易用的安全容器平台,Kata 3.0 看起来不错,支持Linux、Windows以及云环境,很符合我的需求。期待尽快体验一下!
有12位网友表示赞同!
如果 Kata 确实能够做到真正的开箱即用,那将会是一个重大的进步。期待未来看到更多基于 Kata 的创新应用!
有7位网友表示赞同!
感觉还是有些炒作吧,“多年锤炼,迈向Kata 3.0”有点夸张,实际上的改进可能不是非常明显。建议官方从技术细节上说明此次升级的亮点。
有6位网友表示赞同!
我之前尝试过 Kata,但当时觉得配置比较复杂。这次新版本是否简化了配置流程,方便新手上手使用呢?
有7位网友表示赞同!
对于安全性敏感的用户来说,Kata 的优势还是非常明显的。开箱即用的体验也能提高用户的使用率,希望 Kata 可以继续保持这种创新步伐!
有15位网友表示赞同!
很多时候安全容器只是在特定场景下使用,而不是所有项目都需要用到。这次 Kata 3.0 是否针对不同应用场景做了更好的适配?
有13位网友表示赞同!
一直关注安全容器的发展,Kata 是一个比较优秀的选择。这次开箱即用的升级应该能够让更多人了解和使用。加油!
有9位网友表示赞同!
总觉得“体验之旅”这个词有点俗气。还是建议官方用更具体的语言描述此次升级带来的改变和用户能享受到的益处。
有15位网友表示赞同!
对于安全容器来说,性能和稳定性同样重要。希望 Kata 3.0 不仅注重“开箱即用”,同时也针对性能和稳定性进行了优化!
有7位网友表示赞同!
期待体验一下开箱即用的Kata 3.0!相信它能帮助我更高效、更安全的完成工作
有11位网友表示赞同!
很久没使用 Kata 了,这次更新真是个惊喜!“开箱即用”听起来很棒,希望能真正提升开发效率。
有7位网友表示赞同!
很多安全容器平台都是比较复杂的,Kata 3.0 能否做到真正的简单易用?期待看到官方的具体说明和体验视频
有15位网友表示赞同!