在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

iSulad+Kuasar:管理面資源消耗銳減99%的新一代統(tǒng)一容器運行時解決方案

openEuler ? 來源:openEuler ? 2023-04-27 15:00 ? 次閱讀

隨著云計算和容器技術(shù)的不斷發(fā)展,容器引擎和容器運行時已經(jīng)成為了云原生時代的基石,它們負(fù)責(zé)了容器生命周期的管理以及容器運行過程中環(huán)境的創(chuàng)建和資源的配置。openEuler 社區(qū)基于容器引擎項目 iSulad[1]在解決容器運行效率、安全性以及隔離性等問題上進(jìn)行著不斷地嘗試與探索。

華為云在 2023 年 4 月 21 日阿姆斯特丹的 Kubecon+CloudNativeCon Europe 2023 云原生峰會上發(fā)布了多沙箱運行時Kuasar[2],將 Kubernetes CRI(https://github.com/kubernetes/cri-api) 標(biāo)準(zhǔn)中的 Pod 語義準(zhǔn)確地映射到了 Kuasar 的 Sandbox 語義。與此同時,iSulad 容器團隊與華為云 Kuasar 緊密合作,率先支持了 Kuasar 的 Sandbox 語義,實現(xiàn)了從 Kubernetes 到 iSulad 容器引擎到 Kuasar 統(tǒng)一容器運行時的全棧打通。通過 iSulad 和 Kuasar 項目,統(tǒng)一了容器運行時應(yīng)對不同容器隔離技術(shù)的 Kubernetes 生態(tài)場景,簡化了單節(jié)點上多種容器(或沙箱)形態(tài)的統(tǒng)一部署。相比于 Containerd + Kata-Containers 的運行時組合,iSulad + Kuasar「不僅可以支持多種容器隔離技術(shù),而且使容器運行時管理組件的內(nèi)存消耗減少了 99%,并行啟動時間縮短了 40%以上!」

背景與現(xiàn)狀

5e8cce9a-e4c8-11ed-ab56-dac502259ad0.png

從容器編排組件 Kubernetes 的視角來看,能夠處理 CRI(Container Runtime Interface)請求的服務(wù)端都是容器運行時(Container Runtime)。事實上,容器運行時還可以再細(xì)分為兩個層次,即容器引擎和底層容器運行時。

容器引擎(Container Engine)主要負(fù)責(zé)容器運行環(huán)境的創(chuàng)建、容器資源的配置和容器生命周期的管理,北向接收來自于 Kubernetes 或前端命令行的輸入,南向則調(diào)用底層容器運行時(Low Level Container Runtime)來完成最終容器環(huán)境的生成和容器生命周期的操作。

在業(yè)界,容器引擎和容器運行時的術(shù)語經(jīng)常被交替使用。「在本文的語義中,容器運行時特指底層容器運行時」。除了 iSulad 以外,當(dāng)前的容器引擎還包括 Containerd,Docker 等,底層容器運行時包括 runc,Kata-Containers 等。

這些容器引擎和容器運行時由于一些歷史原因一直存在著不少遺留問題。這些問題主要是由于容器引擎和容器運行時沒有妥善處理 CRI 中的 Pod 語義而引起的。下圖以 MicroVM 為例,簡單介紹了一些容器引擎和容器運行時中的主要問題。

5e9d0cba-e4c8-11ed-ab56-dac502259ad0.png

1. Pod 語義缺失

Kubernetes 的 CRI 規(guī)范強化了 Pod Sandbox 的概念,將 Pod 作為容器編排調(diào)度的最小單元。Pod 是一個或多個容器的組合,他們共享一些命名空間和資源,沙箱(Sandbox)則通過容器隔離技術(shù)為這一組容器提供安全隔離的運行環(huán)境。然而,Pod 的語義在容器引擎和容器運行時的層面并沒有很好的體現(xiàn)出來,這導(dǎo)致這些組件在架構(gòu)上的不合理,同時也增加了實現(xiàn)的復(fù)雜度,帶來了很多維護(hù)上的問題,比如 shim 進(jìn)程的管理和維護(hù),IO 通道的維護(hù)等等。

2. Shim 進(jìn)程的冗余

在通過 shim v2 標(biāo)準(zhǔn)創(chuàng)建 Pod 的過程中,每創(chuàng)建一個新 Pod 都需要啟動一個 shim 進(jìn)程對 Pod 及其資源進(jìn)行管理。由此而帶來的問題有以下三點:

內(nèi)存資源的消耗:shim 進(jìn)程消耗了大量內(nèi)存資源。經(jīng)過測試,在 Containerd + Kata 的組合中,每增加一個 Pod,由于 shim 進(jìn)程引起的管理層組件的內(nèi)存消耗就增加了約 18MB。

啟動時間的延長:由于 shim 進(jìn)程的存在,容器生命周期管理的調(diào)用鏈變長,增加了啟動時間,消耗了更多的 CPU 資源。

可靠性問題的增加:在大規(guī)模商用實踐中,可靠性問題困擾著不少容器商用團隊,這些問題不僅影響了業(yè)務(wù)正常開展,而且難以定位和解決。shim 進(jìn)程的存在帶來了大量的類似問題,比如狀態(tài)不一致、數(shù)據(jù)流卡死、進(jìn)程殘留等,大大增加了容器的維護(hù)成本。

3. Pause 容器的冗余

由于歷史原因,早期的通用容器是通過 Linux 的 namespace + cgroups 實現(xiàn)資源隔離與資源限制的。Pause 容器就是早期的容器形態(tài)為了應(yīng)對 CRI 中 Pod 語義而創(chuàng)建的特殊容器。這個容器的作用就是根據(jù)配置創(chuàng)建命名空間、限制共享資源。除此之外,Pause 容器不執(zhí)行任何實際工作但卻會消耗一些 CPU 時間和內(nèi)存資源,同時由于 Pause 容器的存在也增加了系統(tǒng)被攻擊的攻擊面,會帶來一些潛在的安全風(fēng)險。事實上,對于當(dāng)前的一些容器隔離技術(shù)來說,Pause 容器是可以消除的。比如說虛擬化隔離技術(shù),虛擬機本身就已經(jīng)具備了足夠的安全性與隔離性,不需要 Pause 容器協(xié)助配置命名空間和共享資源。

4. 容器運行時隔離技術(shù)單一

容器隔離技術(shù)是推動容器運行時快速發(fā)展的主要動力之一。當(dāng)前主流的容器隔離技術(shù)有以下幾種:

Linux 容器隔離技術(shù):Linux 容器主要采用 namespace + cgroups 的方式實現(xiàn)隔離,其主要特點是高性能、低開銷。LXC 是比較早期的隔離技術(shù),后來由于其安全性和可移植性的問題,逐漸被 libcontainer 取代,但其隔離性一直較差,例如 runc 容器。

輕量級虛擬化容器隔離技術(shù):MicroVM 是一種基于虛擬化的容器隔離技術(shù),它使用了輕量級的虛擬化技術(shù)來實現(xiàn)容器的隔離,具備了傳統(tǒng)虛擬機的強隔離性和安全性,但帶來的效率問題也頗為明顯,比如 QEMU, Stratovirt 等。

用戶態(tài)內(nèi)核隔離技術(shù):用戶態(tài)內(nèi)核是將原來運行在內(nèi)核態(tài)的大部分內(nèi)核功能運行在用戶態(tài),通過對業(yè)務(wù)進(jìn)程系統(tǒng)調(diào)用的代理實現(xiàn)系統(tǒng)調(diào)用的安全隔離。相比于虛擬化,用戶態(tài)內(nèi)核更加輕量化、性能更好,但由于依舊處于早期發(fā)展階段,其穩(wěn)定性、可靠性和兼容性存在不少問題,比如 gVisor, Quark 等。

語言虛擬機隔離技術(shù):語言虛擬機隔離技術(shù)本質(zhì)上是將底層字節(jié)碼通過專用的語言虛擬機來加載運行,從而達(dá)到隔離的目的。Wasm 虛擬機就是語言虛機的一種。該類型語言虛擬機隔離技術(shù)利用與平臺無關(guān)的系統(tǒng)接口(WASI),使 Wasm 程序能夠訪問到系統(tǒng)資源。Wasm 沙箱具備冷啟動速度快、資源開銷小的有點,但目前的使用約束較多,支持的語言也有限,成熟度不高,目前還有很多尚未解決的隔離、通用性和語言生態(tài)問題。

不同形態(tài)的容器隔離技術(shù)在性能、安全性以及通用性上都有各自的優(yōu)劣,當(dāng)下大部分容器運行時都只支持單一容器隔離技術(shù),無法很好地發(fā)揮不同隔離技術(shù)的優(yōu)勢。因此在單節(jié)點部署多形態(tài)沙箱的成本與復(fù)雜度都會比較高。

iSulad+Kuasar:新一代統(tǒng)一容器運行時解決方案

為了解決上述的這些痛點問題,openEuler 社區(qū)聯(lián)合華為云推出了新一代統(tǒng)一容器運行時的解決方案,目標(biāo)是讓容器引擎和容器運行時更加優(yōu)雅合理地解決由 shim v2 標(biāo)準(zhǔn)對 Pod 生命周期及其資源管理而引起的問題。

5ea5e57e-e4c8-11ed-ab56-dac502259ad0.png

在容器隔離技術(shù)欣欣向榮的今天,業(yè)界對于將 Sandbox 語義引入容器引擎和容器運行時的思考與討論一直在持續(xù)進(jìn)行。事實上,Containerd 社區(qū)早就開始了對 Sandbox 語義引入的探討,Sandbox API[3]也于 2020 年 3 月被提出,2022 年 4 月正式被合入了 Containerd 社區(qū)。

雖然 Sandbox API 的合入使 Containerd 內(nèi)部對于 Pod 語義的處理更加清晰,但并不能夠解決上述其他與 shim 相關(guān)的問題。iSulad 和 Kuasar 項目對于 Sandbox API 更深層次的創(chuàng)新為解決這些問題帶來了可能性。在新的解決方案中,iSulad 作為容器引擎將 Sandbox API 的調(diào)用延伸出去,通過 RPC 讓作為容器運行時的 Kuasar 來管理 Pod。與原有的基于 shim v2 的方案不同,新的方案不需要為每個 Pod 都創(chuàng)建一個 shim 進(jìn)程。在新的架構(gòu)中,同一類型的容器只需要使用同一個進(jìn)程來管理。例如,上圖中的 MicroVM Sandboxer 就是用于管理輕量級虛擬機的進(jìn)程。iSulad 通過 Sandbox API 與 MicronVM Sandboxer 進(jìn)行交互,用于管理所有該類型的 Pod 的生命周期。同時,每當(dāng)新的 Pod 被創(chuàng)建后,Pod 中的 Task Service 的地址就會通過 Sandbox API 返回給 iSulad,iSulad 便可通過 shim v2 接口與 Pod 中的 Task Service 進(jìn)行交互,管理 Pod 中的容器。

這個新的解決方案完美地解決了容器引擎與容器運行時之間遺留已久的痛點問題:

「Sandbox 的語義被帶入了容器引擎和容器運行時」,在語義層面與 CRI 保持一致,增強了在云原生架構(gòu)上的連貫性。

Kuasar 用一個 Sandboxer 進(jìn)程取代了 shim v2 中的多個 shim 進(jìn)程,解決了由 shim 進(jìn)程帶來的多個問題:

「Sandboxer 削減了 shim 進(jìn)程的冗余,大大減小了由于 shim 進(jìn)程帶來的資源開銷。根據(jù)測試在 50 個 Pod 的場景下,Kuasar 在管理面的開銷只有 shim V2 的 1%。」

「容器的創(chuàng)建不需要通過 shim 進(jìn)程代理,iSulad 直接將容器生命周期管理的請求發(fā)送給 Task Service,從而使啟動時間縮短了 40%以上。」

「消除了 shim 進(jìn)程以后,各種狀態(tài)不一致、數(shù)據(jù)流卡死、進(jìn)程殘留等可靠性問題都會隨之有所改善。」

在新的架構(gòu)中,Pod 是通過 Sandbox API 創(chuàng)建,不必遵循 OCI 標(biāo)準(zhǔn)流程,從而「消除了 Pause 容器的冗余」。

新的解決方案「支持在單一節(jié)點上通過配置運行多種不同類型的沙箱,利用不同的隔離技術(shù),在性能、安全性及通用性等各方面形成優(yōu)勢互補」。

5eaeae70-e4c8-11ed-ab56-dac502259ad0.png

iSulad

作為用 C/C++編寫而成的容器引擎,iSulad 的內(nèi)存底噪僅為 Containerd 的 50%,其輕、靈、快的特點使其能夠在包括云原生、嵌入式等多種場景下部署使用。

在新的解決方案中,iSulad 在結(jié)構(gòu)上也針對 Pod 的處理進(jìn)行了創(chuàng)新與調(diào)整:

北向接口:與原有使用 Container 的語義處理 Pod 管理請求的方式不同,iSulad 將 Sandbox 的語義引入了架構(gòu)和實現(xiàn)當(dāng)中,針對 Pod 與 Container 進(jìn)行了語義上的區(qū)分,不僅更好地支持了 CRI 以及命令行對于 Pod 的請求,而且也為后續(xù)容器形態(tài)的多樣性提供了更大的拓展空間。

南向接口:iSulad 將 Sandbox API 延伸出去,通過 Sandbox API 為不同的容器形態(tài)提供統(tǒng)一接口,實現(xiàn)歸一化管理,同時也對容器運行時 Kuasar 提供了更為清晰、精準(zhǔn)的調(diào)用請求。

用戶可以通過 iSulad 的dev-sandbox 分支[4],體驗 iSulad+Kuasar 的最新版本,具體可參見用戶指南[5]。

iSulad 社區(qū)將在未來對新一代容器運行時的演進(jìn)中,持續(xù)與 Kuasar 社區(qū)保持深入合作,共同擴大多沙箱容器技術(shù)在業(yè)界的影響力。

Kuasar

Kuasar[6]作為新一代的容器運行時,不再采用通過 shim v2 接口來管理 Pod,取而代之的是 Kuasar 向容器引擎提供的新一代容器運行時 Pod 管理接口 Sandbox API。這套接口不僅邏輯更加清晰,而且可以支持多沙箱接入。

Kuasar 的設(shè)計引入了 Sandboxer 的概念。每一種 Sandboxer 都使用了自己的容器隔離技術(shù),用來管理同一類型的 Pod。當(dāng)前 Kuasar 已支持多種 Sandboxer 的實現(xiàn),包括 QEMU,Cloud-Hypervisor,StratoVirt[7],Quark 等。

openEuler 全棧解決方案

openEuler 社區(qū)在容器引擎和容器運行時技術(shù)上的探索是多方位的。iSulad 項目已經(jīng)活躍多年,并在功能上持續(xù)完善,性能上持續(xù)優(yōu)化。輕量級虛擬機 StratoVirt 則著力于虛擬技術(shù)的突破,相比于 QEMU 在內(nèi)存和啟動時間上都有大量優(yōu)化。如今,與華為云合作的新一代統(tǒng)一容器運行時 Kuasar 步入正軌,openEuler 社區(qū)具有了「iSulad + Kuasar + StratoVirt 全棧國產(chǎn)安全容器解決方案」。對比主流的 Containerd + Kata + QEMU 的解決方案,這套國產(chǎn)解決方案大大提升集群的整體性能和部署能力。

總結(jié)

新一代容器引擎與容器運行時的解決方案解決了當(dāng)前主流方案由來已久的痛點問題,不僅完善了運行時在 Pod 語義上的缺憾,新增了多沙箱部署的能力,而且在性能和可靠性等方面也帶來了大幅提升。目前已完成了功能上開發(fā),后續(xù)特性的探索與質(zhì)量的加固還在持續(xù)進(jìn)行當(dāng)中,歡迎大家提前試用并提出寶貴的意見,我們會盡快催熟相關(guān)特性并合入 openEuler LTS 版本。

openEuler 社區(qū)一直秉承著開放、合作、共享的開源態(tài)度,歡迎更多的開發(fā)人員加入 openEuler 參與 iSulad、Kuasar、StratoVirt 等容器和虛擬化項目共同探索。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 引擎
    +關(guān)注

    關(guān)注

    1

    文章

    361

    瀏覽量

    22561
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    22061
  • openEuler
    +關(guān)注

    關(guān)注

    2

    文章

    313

    瀏覽量

    5877

原文標(biāo)題:iSulad+Kuasar:管理面資源消耗銳減 99%的新一代統(tǒng)一容器運行時解決方案

文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何縮短Vivado的運行時

    在Vivado Implementation階段,有時是有必要分析下什么原因?qū)е?b class='flag-5'>運行時間(runtime)過長,從而找到些方法來縮短運行時間。
    的頭像 發(fā)表于 05-29 14:37 ?1.4w次閱讀
    如何縮短Vivado的<b class='flag-5'>運行時</b>間

    各種容器運行的作用是什么

    容器技術(shù)中,容器運行時可以分為三種類型:低級運行時、高級運行時以及沙盒或虛擬化運行時
    發(fā)表于 09-20 11:42 ?871次閱讀
    各種<b class='flag-5'>容器</b><b class='flag-5'>運行</b>的作用是什么

    iSulad+Kuasar+StratoVirt安全容器解決方案的使用介紹

    Kuasar 是今年華為在 CNCF 峰會上發(fā)布的支持多種沙箱隔離技術(shù)的容器運行時 [1],可以在單個節(jié)點上運行多種不同類型的沙箱容器;同時
    的頭像 發(fā)表于 11-20 17:00 ?2056次閱讀
    <b class='flag-5'>iSulad+Kuasar</b>+StratoVirt安全<b class='flag-5'>容器</b><b class='flag-5'>解決方案</b>的使用介紹

    如何在調(diào)試的時候查看運行時間?

    如何在調(diào)試的時候查看運行時間,芯片:TM4C123GH6PM
    發(fā)表于 09-05 07:41

    分享款不錯的基于數(shù)字信號處理器的新一代車載娛樂系統(tǒng)解決方案

    分享款不錯的基于數(shù)字信號處理器的新一代車載娛樂系統(tǒng)解決方案
    發(fā)表于 05-17 06:07

    ATC'22頂會論文RunD:高密高并發(fā)的輕量級 Serverless 安全容器運行時 | 龍蜥技術(shù)

    時,RunD 從cgroup 池綁定個輕量級的 cgroup 進(jìn)行資源管理。基于上述優(yōu)化,當(dāng)使用 RunD 作為安全容器運行時,安全容器
    發(fā)表于 09-05 15:18

    k8s容器運行時演進(jìn)歷史

    運行時接口(Container Runtime Interface),這步中,Kubelet 可以視作個簡單的 CRI Client,而 dockershim 就是接收請求的 Server。目前 dockershim 的代碼
    的頭像 發(fā)表于 02-02 13:50 ?1925次閱讀
    k8s<b class='flag-5'>容器</b><b class='flag-5'>運行時</b>演進(jìn)歷史

    如何高效測量ECU的運行時

    ,最終可能會引起運行時間方面的問題。這在項目后期需要大量的時間和金錢來解決。如果不能掌握系統(tǒng)的運行狀態(tài),則很難發(fā)現(xiàn)系統(tǒng)內(nèi)缺陷的根源。 解決方案 將TA軟件工具套件與VX1000測量標(biāo)定硬件相結(jié)合,可同步分析 ECU內(nèi)部
    的頭像 發(fā)表于 10-28 11:05 ?2226次閱讀

    Go運行時:4年之后

    自 2018 年以來,Go GC,以及更廣泛的 Go 運行時直在穩(wěn)步改進(jìn)。近日,Go 社區(qū)總結(jié)了 4 年來 Go 運行時些重要變化。
    的頭像 發(fā)表于 11-30 16:21 ?833次閱讀

    什么是Kubernetes容器運行時CRI

    起初,Docker是事實上的容器技術(shù)標(biāo)準(zhǔn),Kubernetes v1.5之前的代碼中直接調(diào)用Docker API,實現(xiàn)容器運行時的相關(guān)操作。
    的頭像 發(fā)表于 02-20 16:22 ?1518次閱讀
    什么是Kubernetes<b class='flag-5'>容器</b><b class='flag-5'>運行時</b>CRI

    怎樣避免電力電容器運行時漏油

    電力電容器運行中,會因為各種因素出現(xiàn)故障。在電力電容器運行時遇到的故障中,出現(xiàn)滲油和漏油的概率非常大。那么如何避免電力電容器
    的頭像 發(fā)表于 04-07 16:01 ?902次閱讀

    ch32v307記錄程序運行時

    ch32v307記錄程序運行時間 在程序開發(fā)中,很重要的項任務(wù)就是對程序的運行時間進(jìn)行評估。對于大型的程序系統(tǒng)來說,它們通常需要處理大量的數(shù)據(jù)或進(jìn)行復(fù)雜的計算操作。因此,如果程序的運行時
    的頭像 發(fā)表于 08-22 15:53 ?908次閱讀

    龍芯中科攜手百存儲打造基于龍架構(gòu)的新一代國產(chǎn)統(tǒng)一存儲解決方案

    為解決國產(chǎn)化存儲的"卡脖子"問題,滿足數(shù)據(jù)存儲自主可控的核心需求,龍芯中科技術(shù)股份有限公司聯(lián)合百(上海)數(shù)據(jù)技術(shù)有限公司(以下簡稱“百存儲”)打造基于龍架構(gòu)的新一代國產(chǎn)統(tǒng)一存儲
    的頭像 發(fā)表于 10-09 14:49 ?802次閱讀

    如何保證它們容器運行時的安全?

    緊密耦合的容器運行時繼承了主機操作系統(tǒng)的安全態(tài)勢和攻擊運行時或主機內(nèi)核中的任何漏洞及其利用都會成為攻擊者的潛在切入點。
    的頭像 發(fā)表于 11-03 15:24 ?681次閱讀

    jvm運行時內(nèi)存區(qū)域劃分

    JVM是Java Virtual Machine(Java虛擬機)的縮寫,它是Java編程語言的運行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機器代碼,并且在運行時管理Java程序的內(nèi)存。JVM
    的頭像 發(fā)表于 12-05 14:08 ?537次閱讀
    主站蜘蛛池模板: 成人午夜小视频手机在线看| 午夜性| 伊人888| 久久综合九色综合98一99久久99久| 午夜影院0606免费| 免费看h网站| 色九| 未满十八18周岁禁止免费国产| 开心激情五月婷婷| 色噜噜狠狠成人中文小说| 在线视免费频观看韩国aaa| 免费观看视频网站| 色老头综合| 天天干天天干| 男女视频在线观看免费| 美女骚网站| 激情综合五月天丁香婷婷| 亚洲综合啪啪| 第四色视频| 91国在线啪精品一区| 日韩二级| 热九九精品| 亚洲国产人成在线观看| 爱爱免费网站| 亚洲日本一区二区| 欧美色视频日本| 免费观看一级一片| 亚洲aaaa级特黄毛片| 中国一级特黄剌激爽毛片| 正在播放亚洲一区| 美女国产在线观看免费观看| 国产色片| 日韩一级片在线| 神马午夜影院| 午夜色网站| 色444| 久操视频在线观看| 伊人网网| 亚洲午夜视频在线观看| 国产黄色网页| 在线观看三级视频|