【华为云技术分享】iSulad轻量化容器实践解析
容器应用带来的困扰
容器应用在2019年迎来新的一轮浪潮,全球整体容器市场规模以高达30%的速度高歌猛进,大多数企业开始全面拥抱容器化,容器的规模、密度愈加扩大。
根据Sysdig 2019年容器使用报告统计,在企业内部容器规模方面,9%的企业用户容器规模已经达到5000以上;在容器密度方面,与2018年相比,每台主机中的容器密度提高了100%,从15个增加到了30个,其中最大节点密度已经达到250个。
- 本统计数据来自sysdig-2019-container-usage-report
在这样的应用规模下,也许大家有类似的经历:
- 当部署高密度容器节点或资源敏感环境时,容器的基础设施资源占用超乎了想象;
- 当大规模应用拉起或突发流量时,原本觉得够用的并发速度却成为了瓶颈;
面对这两个问题,是否有什么解决方案么?本文将和大家一起探讨一下解决这两个问题的一些“心路历程”。
重新造个“轮子”?!
上述两个问题在大规模容器化应用的过程中不断出现,并且随着IoT、边缘计算产业的兴起变得愈发紧迫:边缘节点资源敏感,留给容器基础设施的资源屈指可数,一个更轻量、更快速的容器引擎呼之欲出。
接下来我们想分享一下应用过程中的一些尝试:
首先考虑“能否对开源容器引擎软件进行轻量化改造”,沿着这个思路,我们尝试过对Docker容器引擎进行了裁剪和精简化,例如去除不需要的功能、组件结构优化等,甚至对Golang本身编译进行优化,但是效果不甚理想。因为我们的使用范围并不只是服务器等通用场景,我们的容器甚至会运行在端侧的嵌入式设备上,单单裁剪容器引擎其实也并不能完全满足我们的要求。
另外,由于覆盖云、IoT、边缘计算等多个场景,我们的裁剪和轻量化并不能通用适配所有场景,因此需要维护多个容器引擎版本,这对我们的升级和维护造成了不少麻烦。
这时候,一个大胆的想法涌入了我们的脑海,是不是可以重新造个“轮子”!对于软件工程师来说,没有什么是比重新造个“轮子”更棒了!
对, 那我们就重新造一个“大一统”的容器引擎!
千呼万唤,iSulad来了
2017年,iSula容器团队开始了重新开发一个容器引擎的计划,并在2018年开始在华为内部分产品进行替代。
2019年,我们针对CRI接口进行了一次大范围的重构和补全,并最终决定将它与openEuler操作系统一并开源出来。
现在的iSulad项目的目标是成为通用的端、边、云平台一体的容器引擎,可提供统一的架构设计来满足云、IoT、边缘计算等多个场景的应用。
最后,我们的小蚂蚁iSulad终于出生了!
看到这里,同学们可能会有点疑惑,iSulad到底是啥呢?
iSula 在居住中南美洲亚马逊丛林的巴西原住民眼里,它是一种非常强大的蚂蚁,学术上称为“子弹蚁”,因为被它咬一口,犹如被子弹打到那般疼痛,它是世界上最强大的昆虫之一。
iSula为全量的容器软件栈,包括引擎、网络、存储、工具集与容器OS;iSulad 作为其中轻量化的容器引擎,可以为多种场景提供最灵活、最稳定、最安全的底层支撑,与子弹蚂蚁"小个头、大能量"的形象不谋而合。
iSulad的特点:
- 轻
- iSulad的第一个使用场景是在端侧设备上,你很难想象在一个智能摄像头上会使用容器来达到快速、简单切换算法应用部署的功能,在那样严苛的资源要求环境下,iSulad (Light Mode)本身占用资源极低(<15M),并结合特殊的轻量化镜像,达成极致的资源占用的效果。
- 当然,在通用场景下,iSulad也有着不错的轻量化表现。iSulad将端侧的优秀实践继承到通用服务器场景,利用轻量化的lxc运行时以及极其轻量的monitor进程,简化了整个调用链路
- 快
- 随着Serverless的快速兴起,Serverless Container也成为云计算的一个重要的基础设施。为了满足Serverless Container的诉求,iSulad进行了一系列的尝试和努力:
- )iSulad采用C/C++语言实现,具备运行速度快、底噪低等特性,且LXC运行时优秀的并发设计也为iSulad并发性能提供了基石;
- )架构设计上,除了启动容器部分需要通过fork/exec的方式,其他部分均使用调用函数库的方式加快执行速度;通过将镜像和rootfs部分独立为服务,以及优化镜像模块元数据的隔离性,实现了不同镜像和rootfs之间的操作完全隔离。
- 易
- 根据Sysdig的统计,当前79%的用户仍在使用Docker作为其主力容器引擎
- sysdig-2019-container-usage-report
- 应用的迁移一直是一个很令人头疼的问题,iSulad为了使开发者迁移方便,正在筹备开发一系列迁移工具,帮助开发者将自己的应用平滑迁移到iSulad上来。
- 更激动的是,iSulad很快就会支持热迁移啦,那时候就能更便捷的迁移开发者的应用了。
- 灵
- iSulad针对不同的使用场景提供不同的模式供大家组合切换,开发者可以根据自己的使用需要灵活配置切换注重性能的performance模式和注重资源占用的light模式。
- iSulad支持多种不同的容器形态,iSulad内置支持系统容器、安全容器和普通容器以及轻量化容器支持。
iSulad应用实测
经过上文的介绍,是不是想看看iSulad的实际效果呢?
- 在内存资源占用方面,100容器启动情况下,iSulad比Docker所占用的内存资源消耗下降68%。
- 在并发启动速度方面,100容器并发情况下,iSulad比Docker要快上35%:
更多信息
想要进一步了解iSulad项目并参与iSulad项目吗?
欢迎来我们的社区玩儿哦~
openEuler开源社区:https://openeuler.org
iSulad项目源码:https://gitee.com/openeuler/iSulad
- 点赞
- 收藏
- 分享
- 文章举报
- 【华为云技术分享】基于小熊派STM32芯片的通过MQTT上报JSON数据到华为物联网平台的自动售货机Demo解析
- 【华为云技术分享】【IoT最佳实践】智慧烟感语音报警(配置篇)
- WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
- 基于kubernetes自研容器管理平台的技术实践
- 【华为云技术分享】浅谈服务化和微服务化(上)
- 华为云大咖说-庄表伟:架构师的基本功——管理篇【华为云技术分享】
- 漫画 | 从搬家到容器技术 Docker 应用场景解析
- 腾讯云技术分享:MySQL AHI 实现解析
- 子弹短信光鲜的背后:网易云信首席架构师分享亿级IM平台的技术实践
- [分享]解析“程序员的十大技术烦恼”
- 镜像命名的最佳实践 - 每天5分钟玩转 Docker 容器技术(18)
- 技术与架构,解析如何将大数据最快落地到实践
- WebP 在减少图片体积和流量上的效果如何?WebP 技术实践分享
- 普元容器云平台实践分享
- 甜橙金融:区块链赋能的隐私技术解析与金融应用实践 - 架构
- 技术与架构,解析如何将大数据最快落地到实践
- 【公开课】【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践
- 我刚刚通过 @盛大网盘EverBox 分享了 Web协议与实践HTTP.、网络协议、缓存技术和....pdf, 欢迎大家下载!
- 容器化实践的经验分享
- 最前沿的容器技术有哪些?腾讯、华为、思科等 6 位顶尖专家为你解答!