【云駐共創】華為云云原生鉆石課程01:容器運行時技術深度剖析

      網友投稿 895 2025-03-31

      摘要


      容器技術作為云原生時代的核心內容,已經廣泛使用在公有云、IDC等各環境中。可是容器作為一種應用和資源隔離的技術,深入了解容器運行時隔離技術的原理和主流的運行時實現方式有非常重要的意義。今天我們在華為云云原生磚石課程的帶領下,一起深度剖析容器運行時技術。

      一、容器引擎和運行時機制原理剖析

      容器技術作為云原生技術的核心組成部分,已經廣泛使用在公有云、IDC等各環境中。可是容器作為一種應用和資源隔離的技術,究竟它的實現原理是什么呢?它都有哪些不同的實現方式呢?我們究竟怎么定義“容器”呢?接下來,我們將深入容器技術的神秘面紗,揭開其背后的技術原理,給大家還原一個清晰的容器運行時技術全貌。

      1. CRI接口

      CRI接口是kubelet調用容器運行時的grpc接口。dockershim是kubernets對接docker api的CRI接口適配器,kubernetes 1.21版本已經將其標注為廢棄接口。但是,這并不意味著kubernetes不再兼容docker容器。

      CRI-containerd是通過containerd中的CRI插件實現了CRI接口,讓containerd可以直接對接containerd啟動容器,無需調用docker api。當前使用最為廣泛的CRI接口實現。CRI-O是專注于在kubernetes運行容器的輕量級CRI接口實現(不關注開發態)。

      CRI接口運行時接口負責容器的生命周期管理,包括容器創建、啟動、停止、刪除、日志和性能采集等接口。相關接口如下圖所示:

      CRI鏡像接口負責容器鏡像的管理,包括顯示鏡像、拉取鏡像、刪除鏡像、狀態查詢等接口。相關接口如下圖所示:

      2. OCI runtime spec介紹

      OCI組織是Linux基金會于2015年6月成立的,全稱是Open Container Initiative。旨在圍繞容器格式和運行時制定一個開放的工業化標準。目前主要有兩個標準文檔:容器運行時標準(runtime spec)和容器鏡像標準(image spec)。

      Runtime spec是容器運行時標準,定義了容器狀態和配置文件格式,容器生命周期管理命令和參數等。runc是docker捐獻給OCI社區的一個runtime spec的參考實現,docker容器也是基于runc創建的。Kata-runtime是一種基于虛擬化的安全隔離的OCI runtime spec的實現。gVisor是一種基于系統調用攔截技術的輕量級安全容器實現。

      Config.json文件定義了容器運行所需的所有信息,包括rootfs、mounts、進程、cgroups、namespaces、caps等。

      【云駐共創】華為云云原生鉆石課程01:容器運行時技術深度剖析

      容器生命周期管理命令,包括創建、啟動、停止、刪除、狀態查詢等,示例命令如下:

      1)創建容器命令格式:

      # runc create

      2)啟動容器命令格式:

      # runc start

      3)容器狀態查詢命令格式:

      # runc state

      4)停止容器命令格式:

      # runc kill

      5)刪除容器命令格式:

      # runc delete

      3. runtime v2

      Shimv2是新的容器運行時接口,基于ttrpc進行通信。其目的是讓運行時更方便維護容器狀態和生命周期,減少安全容器實現中節點的進程數和資源調用。

      相關接口定義如下圖所示:

      4. RuntimeClass

      RuntimeClass是kubernetes中的對象類型,定義了集群中的某種運行時,并且可以通過overhead和nodeSelector定制某種運行時的資源和調度行為。

      Runtime Plugin是containerd中的runtime插件配置,定義了runtime名稱、二進制路徑、傳遞的annotation、特權容器模式等。

      RuntimeClassName是pod中的字段,通過該字段可以決定用哪種運行時啟動容器。具體配置信息可以參考下圖:

      2、 業界主流容器運行時技術架構剖析

      1. Runc

      runc中的Namespace概念是用來隔離資源和信息的,通過namespace的隔離,容器中的應用只能看到分配到該容器的資源、其他主機上的信息在該容器中是不可見的。常用的namespace有PID(進程號)、MNT(掛載點)、NET(網絡)、UTS(主機名)和IPC(進程間通信)等。

      cgroups用于資源使用量的隔離,通過cgroup限制了容器使用的資源量,通過不同的子系統,限制不同的資源,包括CPU、內存、IO帶寬、大頁、fd數等。

      capability用于權限限制,通過對進程的capability定義,限制容器中的進程調用某些系統調用,以達到容器進程無法逃逸到主機的目的,比如容器中的進程是不是具有以下capability:SYS_ADMIN、MKNOD、SYS_RESOURCE、SYS_MODULES等。

      容器進程對應的namespace、capability mask和主機進程對比的情況如下圖所示(左邊是容器進程,右邊是主機進程):

      2. kata containers

      Kata container是基于虛擬化來實現的容器隔離技術,具體特點和優勢表現如下:

      1)虛擬化隔離,每個pod都運行在一個獨立的虛擬機中,提供虛擬化接口對接不同的虛擬化實現,包括qemu、cloud hypervisor、firecracker等。

      2)輕量化,為了達到和容器近似的使用體驗,需要對各組建進行裁剪,達到輕量化和啟動加速的目的,對于hypervisor,去除通用虛擬化的各種不必要的設備、總線等。對于guest kernel,也裁剪了大量不需要的驅動和文件系統模塊。而運行在虛擬機中的1號進程,一般為kata-agent,資源占用可小于1MB。

      3)主機資源訪問,通過virtio、vfio等方式訪問主機資源,如virtio-blk(塊設備)、virtio-fs(文件)、virtio-net(網絡)、vfio(物理設備)、vhost-user(用戶態網絡或者存儲)。

      3. gVisor

      gVisor是另外一種容器技術,主要是通過攔截系統調用實現的,主要特點如下:

      1)虛擬內核,設置進程的4種模式,HR0、HR3、GR0、GR3,通過攔截系統調用,實現了一個虛擬內核,用戶進程與host kernel不直接交互。

      2)攔截系統調用,其實現方式有兩種,分別是ptrace和kvm。這種方式的優點是額外內存消耗小、容器啟動速度快,但是也存在缺點,系統調用慢,導致IO和網絡等性能較差,另外由于是模擬內核,可能會出現POSIX兼容性問題。

      三、華為云容器運行時技術架構剖析

      華為云的容器運行時技術也叫enhanced kata containers,其具備如下優勢和特點:

      1)輕量化,hypervisor采用華為云自研的qemu-microvm,guest kernel采用裁剪EulerOS內核,另外,主機shimv2采用rust語言重寫。

      2)豐富的硬件支持,支持常見的GPU、nvlink、Ascend、IB、SDI。

      3)華為云基礎設施融合,能夠和evs(塊設備)、obs(對象存儲服務)、sfs(文件存儲)、vpc(華為云VPC網絡)打通。

      產品形態有兩種,第一種是CCI,意思是全托管的云容器實例;第二種是CCE turbo,意思是CCE增強版。容器內網卡即VPC地址可以與VPC無縫連接,CCI中可以定義GPU資源,運行AI的訓練或者推理任務,通過PVC直接掛載華為云的sfs存儲。

      四、容器運行時技術的發展方向

      未來容器運行時技術的發展方向有兩個,一個是更輕量,一個是更安全。

      輕量化方向,可以通過定制虛擬化和內核,提供更輕量的安全隔離方法;使用sandbox plugin,去除host主機上的shim;Rust化,重寫hypervisor、kernel、agent模塊,減小內存占用。

      更安全方向,基于虛擬化的機密計算,比如TDX、SEV、PEF;鏡像功能卸載,主機上看不到容器的依賴鏡像;遠程認證,確保運行在機密環境中。

      總結

      本文從API的角度介紹了kubernetes下容器運行時的架構和原理,介紹了當前較為熱門的幾種容器運行時的實現,同時介紹了華為云的容器產品和對應的運行時類型,可以選擇基礎型與增強型兩種模式,最后談了容器運行時未來的發展方向。通過rust重寫、減少host進程,進一步輕量化hypervisor結合機密計算等方式實現更加輕量級的安全容器。

      本文整理自華為云社區【內容共創】活動第13期。

      https://bbs.huaweicloud.com/blogs/330939

      任務1 8 .華為云云原生鉆石課程01:容器運行時技術深度剖析

      云原生 容器

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel頁碼設置自定義頁碼教程
      下一篇:nuget新cdn地址(globalcdn.nuget.org)無法訪問的處理
      相關文章
      色噜噜噜噜亚洲第一| 亚洲大片在线观看| 亚洲欧洲日韩不卡| 亚洲精品自在在线观看| 亚洲国产一级在线观看 | 亚洲成av人片天堂网| 亚洲色偷偷偷鲁综合| 亚洲日韩aⅴ在线视频| 伊人亚洲综合青草青草久热| 国产亚洲自拍一区| 亚洲啪啪综合AV一区| 国产亚洲综合一区柠檬导航| 精品亚洲永久免费精品| 亚洲av无码不卡一区二区三区| 国产亚洲精品a在线观看app| 国产成人无码综合亚洲日韩| 亚洲av色影在线| 亚洲综合激情六月婷婷在线观看| 亚洲精品视频免费在线观看| 亚洲一区在线视频| 一本色道久久88—综合亚洲精品| 亚洲乱理伦片在线观看中字| 亚洲a∨无码一区二区| 偷自拍亚洲视频在线观看| www.亚洲色图.com| 亚洲偷自拍拍综合网| 亚洲色偷偷偷鲁综合| 亚洲伦理一区二区| 亚洲国产成人精品久久| 亚洲人成人网毛片在线播放| 亚洲av无码成人精品区一本二本| 国产亚洲日韩在线a不卡| 亚洲午夜精品久久久久久浪潮| 亚洲自偷自偷图片| 亚洲av片劲爆在线观看| 亚洲国产日韩在线一区| 亚洲一区二区三区成人网站 | 久久亚洲精品中文字幕无码| 久久精品国产亚洲AV麻豆不卡 | 亚洲成色在线影院| 亚洲视频在线观看地址|