<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是Kubernetes容器運行時CRI

汽車電子技術 ? 來源: 碼農與軟件時代 ? 作者: 碼農與軟件時代 ? 2023-02-20 16:22 ? 次閱讀

一、CRI標準

起初,Docker是事實上的容器技術標準,Kubernetes v1.5之前的代碼中直接調用Docker API,實現容器運行時的相關操作。

后來,為了標準化下層容器運行時的差異(docker\\rkt\\kata containers),2016年,Kubernetes提出了CRI(Container Runtime Interface,容器運行時接口)標準,制定了Kubernetes kubelet與容器運行時的交互接口。容器運行時如果想要集成到Kubernetes平臺,就需要實現這套接口。如圖所示,CRI shim負責實現CRI接口,并將CRI請求轉換為容器運行時的請求。

圖片

CRI接口包括RuntimeService和ImageService兩個服務,前者提供管理Pod和容器生命周期的gRPC接口,后者提供提取、檢查和刪除鏡像的gRPC接口。

service RuntimeService {
//容器操作rpc
 CreateContainer (...) returns (...) {}
 rpc ListContainers  (...) returns (...) {}
 rpc RemoveContainer (...) returns (...) {}
 rpc StartContainer  (...) returns (...) {}
 rpc StopContainer (...) returns (...) {}
 //Pod沙箱操作,可能對應多個容器
 rpc ListPodSandbox (...) returns (...) {}
 rpc RemovePodSandbox(...) returns (...) {}
 rpc RunPodSandbox (...) returns (...) {}
 rpc StopPodSandbox (...) returns (...) {}
 }

二、CRI實現方案

1. Dockershim

標準提出之后,Docker并未實現CRI接口(如日中天,不合作),Kubernetes將CRI接口轉換為Docker API,以支持Docker容器。這部分適配工作由shim(墊片)來完成,稱為dockershim,并內置在kubelet模塊中(kubernetes原生支持)。

此時的調用關系為:

Kubelet-->dockershim-->dockerd(daemon)-->containerd-->containerd-shim-->runc。

不難看出,這個調用鏈很長,可以直接調用containerd來實現相關功能。

2020年,Kubernetes計劃移除dockershim。

2022年,Kubernetes v1.24版本,將dockershim移除(不再提供原生支持)。

需要注意到dockershim也調用了CNI接口。

圖片

更為具體的CNI接口調用為:

圖片

2. CRI-containerd/containerd

containerd提供了容器的生命周期管理、鏡像管理等功能。在Docker 1.11中引入,containerd會為每個容器創建一個containerd-shim,以用來管理相應容器的生命周期。2016年12月,Docker公司將其拆分為獨立組件,并于2017年3月捐贈給CNCF。

圖片

由dockershim部分可知,kubernetes CRI接口調用過長,可采用直接調用containerd的方式。

圖片

kubernetes分兩個版本進行了實現:containerd1.0版本中,通過CRI-containerd進行CRI的適配。

圖片

containerd 1.1版本直接將把適配邏輯寫到了containerd進程中,完成CRI Services到Meta services、Runtime service、Storage service的適配。

圖片

這里的containerd提供了CRI shim的能力:將CRI請求轉換成3個服務的調用,創建出runc容器。

3. CRI-O

CRI-O也就是Container Runtime Interface和Open Container Initiative的組合,源于Kubernetes孵化器項目Open Container Initiative Daemon(OCID)。

作為Kubernetes CRI的一種實現方案,本質上是封裝了OCI接口,對外提供CRI 服務。功能包括容器運行時的管理和鏡像的管理。

三、小結

圖片

四、參考資料

https://github.com/containerd/containerd/blob/main/docs/getting-started.mdhttps://github.com/containerd/containerd/blob/main/docs/historical/cri/proposal.mdhttps://cri-o.io/https://github.com/cri-o/cri-ohttps://developer.aliyun.com/article/1010319https://mp.weixin.qq.com/s/--t74RuFGMmTGl2IT-TFrghttps://iximiuz.com/en/posts/journey-from-containerization-to-orchestration-and-beyon
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1398

    瀏覽量

    61033
  • 容器
    +關注

    關注

    0

    文章

    481

    瀏覽量

    21896
  • Docker
    +關注

    關注

    0

    文章

    438

    瀏覽量

    11634
收藏 人收藏

    評論

    相關推薦

    如何縮短Vivado的運行時

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

    Kubernetes架構和核心組件組成 Kubernetes節點“容器運行時”技術分析

    Kubernetes 架構簡介 Kubernetes架構如下圖所示: 在這張系統架構圖中,我們把服務分為運行在工作節點上的服務和組成集群級別控制板的服務。Kubernetes節點有
    的頭像 發表于 09-25 15:53 ?2970次閱讀
    <b class='flag-5'>Kubernetes</b>架構和核心組件組成 <b class='flag-5'>Kubernetes</b>節點“<b class='flag-5'>容器</b><b class='flag-5'>運行時</b>”技術分析

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

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

    Kubernetes之路 2 - 利用LXCFS提升容器資源可見性

    工具如free/top或遺留應用還依賴上述文件內容獲取資源配置和使用情況。當它們在容器運行時,就會把宿主機的資源狀態讀取出來,引起錯誤和不便。LXCFS簡介社區中常見的做法是利用 lxcfs來提供
    發表于 04-17 14:05

    A5347 IO運行時序電路圖

    A5347 IO運行時序電路圖
    發表于 07-03 12:03 ?449次閱讀
    A5347 IO<b class='flag-5'>運行時</b>序電路圖

    紫金橋組態軟件新的功能_運行時組態

    運行時組態是組態軟件新近提出的新的概念。運行時組態是在運行環境下對已有工程進行修改,添加新的功能。它不同于在線組態,在線組態是在工程運行的同時,進入組態環境,在組態環境中對工程進行修改
    發表于 10-13 16:17 ?2次下載
    紫金橋組態軟件新的功能_<b class='flag-5'>運行時</b>組態

    CRI 與 ShimV2:一種 Kubernetes 集成容器運行時的新思路

    年,由 containerd 社區主導的 shimv2 API 的出現,在 CRI 的基礎上,為用戶集成自己的容器運行時帶來了更加成熟和方便的實踐方法。本次演講分享了關于 Kubernete
    發表于 12-20 17:05 ?134次閱讀

    k8s容器運行時演進歷史

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

    Go運行時:4年之后

    自 2018 年以來,Go GC,以及更廣泛的 Go 運行時,一直在穩步改進。近日,Go 社區總結了 4 年來 Go 運行時的一些重要變化。
    的頭像 發表于 11-30 16:21 ?551次閱讀

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

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

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

    容器引擎(Container Engine)主要負責容器運行環境的創建、容器資源的配置和容器生命周期的管理,北向接收來自于
    的頭像 發表于 04-27 15:00 ?739次閱讀
    iSulad+Kuasar:管理面資源消耗銳減99%的新一代統一<b class='flag-5'>容器</b><b class='flag-5'>運行時</b>解決方案

    JVM運行時數據區之堆內存

    說一下 JVM 運行時數據區吧,都有哪些區?分別是干什么的?
    的頭像 發表于 08-19 14:35 ?450次閱讀
    JVM<b class='flag-5'>運行時</b>數據區之堆內存

    ch32v307記錄程序運行時

    ch32v307記錄程序運行時間 在程序開發中,很重要的一項任務就是對程序的運行時間進行評估。對于大型的程序系統來說,它們通常需要處理大量的數據或進行復雜的計算操作。因此,如果程序的運行時間過長
    的頭像 發表于 08-22 15:53 ?503次閱讀

    Xilinx運行時(XRT)發行說明

    電子發燒友網站提供《Xilinx運行時(XRT)發行說明.pdf》資料免費下載
    發表于 09-14 10:01 ?0次下載
    Xilinx<b class='flag-5'>運行時</b>(XRT)發行說明

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

    緊密耦合的容器運行時繼承了主機操作系統的安全態勢和攻擊面。運行時或主機內核中的任何漏洞及其利用都會成為攻擊者的潛在切入點。
    的頭像 發表于 11-03 15:24 ?335次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>