华为开源Kuasar容器运行时
在KubeCon + CloudNativeCon EU 2023大会上,华为宣布开源了基于Rust的容器运行时Kuasar。Kuasar支持多种类型的沙箱,包括微虚拟机(microVMs)、Linux容器、应用内核(app kernels)和WebAssembly(Wasm)运行时。
Kubernetes与云原生应用的普及
KubeCon EU 2023吸引了超过50%的首次参会者,这表明Kubernetes及其支持的云原生应用范式正在跨越鸿沟,进入主流IT组织。随着Kubernetes的普及,开发者越来越多地将云原生架构应用于传统数据中心之外,如边缘数据中心、数据流应用、区块链、自动驾驶汽车甚至物联网设备。
多样化的云原生应用需求
这些新的云原生应用需要处理多样化的工作负载,单一的Linux容器方法已不再适用。例如,一些应用需要虚拟机级别的安全性和隔离性,而另一些则需要运行轻量级隔离沙箱,如WebAssembly(Wasm)。
现有解决方案的局限性
过去,已有许多努力尝试让虚拟机和Wasm工作负载与Linux容器在同一Kubernetes集群中并行运行。例如,KubeVirt项目可以同时管理虚拟机和容器,crun项目在OCI级别支持Linux容器和Wasm运行时,而containerd项目通过runwasi支持Wasm运行时(如WasmEdge)和Linux容器并行运行。然而,这些项目使用Linux容器框架来支持其他沙箱,导致在使用虚拟机或Wasm沙箱时存在许多低效和意外行为。
Kuasar的设计与优势
Kuasar从底层设计支持多种类型的沙箱和容器。基于containerd的Sandbox API,Kuasar引入了统一的沙箱支持和管理方法。Sandbox API是多个容器资源管理的低级目标,独立实现和编排,没有任何Go依赖。这使得Kuasar可以用Rust实现,从而在基础设施层面提供额外的安全性和性能优势。
与另一个安全的容器运行时Kata相比,Kuasar的启动时间缩短了一半,并且消耗的内存更少。这些性能提升得益于:
- 使用Rust编程语言。
- 重新设计以移除所有暂停容器。
- 重新设计以用单一的常驻sandboxer进程替换shim进程。
Kuasar的支持与集成
作为一个统一的容器运行时,Kuasar已经支持微虚拟机沙箱(如Cloud Hypervisor、StratoVirt和QEMU)、应用内核沙箱(如Quark)和Wasm沙箱(如WasmEdge)。Kuasar可以无缝集成到高级CRI容器管理工具中,如containerd、cri-o、docker和iSulad。
开源与社区支持
Kuasar由多个商业和开源组织联合开发,包括华为云、中国农业银行、WasmEdge(CNCF下的项目)和openEuler社区。Kuasar是一个Apache 2.0下的开源项目,源代码可在GitHub上获取。如果你对容器运行时感兴趣,可以查看并为其做出贡献。
未来展望
CNCF董事会成员Bill Ren在KubeCon EU上分享了他对Kuasar的愿景和期望,认为开源的Kuasar将为开发者提供更多选择和支持,为用户提供更高效、完整和灵活的云原生容器解决方案。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。