【华为云技术分享】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进行了一系列的尝试和努力:
  1. )iSulad采用C/C++语言实现,具备运行速度快、底噪低等特性,且LXC运行时优秀的并发设计也为iSulad并发性能提供了基石;
  2. )架构设计上,除了启动容器部分需要通过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

发布了1026 篇原创文章 · 获赞 5421 · 访问量 93万+
展开阅读全文

没有更多推荐了,返回首页

分享到微信朋友圈

×

扫一扫,手机浏览