【華為雲技術分享】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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM