5.6.2 云原生场景下的计算核心RunD
技术介绍
1. 传统QEMU单实例的内存开销超过100MB,启动时间也达到了数秒;
2. 完整操作系统需要加载大量驱动来支持各类设备,同时systemd等重量级服务带来的资源和启动开销也很大。
RunD为了解决上述问题进行了大量优化和改进(相较Kata Containers的改进如下图所示):
用Rust实现VMM Dragonball:让原有VMM的内存资源开销从100+MB下降到3MB。即使是128M实例的开销也在可接受范围。同时 支持设备直通、设备热插拔、NUMA等特性,让RunD能够适配各种复杂业务场景;多进程融合设计:使RunD在生产环境维护升级 更加便捷,提升安全容器稳定性的同时也让进程间通信转换为进程内通信,降低通信开销,优化启动性能;精简操作系统相关组 件:有效剥离非容器场景相关特性和组件,降低资源开销,精简组件和接口数量,减小沙箱受攻击风险;VMM 和Guest Kernel的融 合设计是安全容器的独特之处。传统虚拟机Guest Kernel由用户提供,VMM要处理各类Guest Kernel,因此大量问题要在宿主机侧 解决。但在安全容器场景,Guest Kernel和VMM的统一提供让两者可以深度融合。这一设计进一步提升了安全容器的启动速度,降 低了安全容器的开销。
通过上述技术突破,RunD目前已在生产环境部署并支持单节点4000安全容器、200/s并发、200ms启动。
技术应用场景
RunD技术解决了微服务和Serverless场景下细粒度资源安全隔离和按需供给问题,该技术适合以下三类场景:
1. 多租户容器场景,例如:公共云对外容器服务场景;
2. 可信&不可信容器混合部署,例如:大数据场景里面部分UDF程序的安全隔离;
3. 不同SLO业务混合部署,例如:离线和在线业务的混合部署。
技术影响力
RunD经历过大规模生产环境的考验,相关成果也已汇总为学术论文发表在2022年USENIX ATC上。当前,RunD部分功能已经正式 合并到Kata 3.0中,成为Kata 3.0架构的一部分。龙蜥社区的云原生SIG也在组内对Kata3.0架构做了重点介绍,并在社区构建了 RunD预览版,为社区用户提供体验。