吴忠躺衫网络科技有限公司

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

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

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

什么是Kubernetes容器運(yùn)行時CRI

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

一、CRI標(biāo)準(zhǔn)

起初,Docker是事實(shí)上的容器技術(shù)標(biāo)準(zhǔn),Kubernetes v1.5之前的代碼中直接調(diào)用Docker API,實(shí)現(xiàn)容器運(yùn)行時的相關(guān)操作。

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

圖片

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

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

二、CRI實(shí)現(xiàn)方案

1. Dockershim

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

此時的調(diào)用關(guān)系為:

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

不難看出,這個調(diào)用鏈很長,可以直接調(diào)用containerd來實(shí)現(xiàn)相關(guān)功能。

2020年,Kubernetes計劃移除dockershim。

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

需要注意到dockershim也調(diào)用了CNI接口。

圖片

更為具體的CNI接口調(diào)用為:

圖片

2. CRI-containerd/containerd

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

圖片

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

圖片

kubernetes分兩個版本進(jìn)行了實(shí)現(xiàn):containerd1.0版本中,通過CRI-containerd進(jìn)行CRI的適配。

圖片

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

圖片

這里的containerd提供了CRI shim的能力:將CRI請求轉(zhuǎn)換成3個服務(wù)的調(diào)用,創(chuàng)建出runc容器。

3. CRI-O

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

作為Kubernetes CRI的一種實(shí)現(xiàn)方案,本質(zhì)上是封裝了OCI接口,對外提供CRI 服務(wù)。功能包括容器運(yùn)行時的管理和鏡像的管理。

三、小結(jié)

圖片

四、參考資料

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

    關(guān)注

    2

    文章

    1510

    瀏覽量

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

    關(guān)注

    0

    文章

    499

    瀏覽量

    22120
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    492

    瀏覽量

    11961
收藏 人收藏

    評論

    相關(guān)推薦

    如何縮短Vivado的運(yùn)行時

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

    Kubernetes架構(gòu)和核心組件組成 Kubernetes節(jié)點(diǎn)“容器運(yùn)行時”技術(shù)分析

    Kubernetes 架構(gòu)簡介 Kubernetes架構(gòu)如下圖所示: 在這張系統(tǒng)架構(gòu)圖中,我們把服務(wù)分為運(yùn)行在工作節(jié)點(diǎn)上的服務(wù)和組成集群級別控制板的服務(wù)。Kubernetes節(jié)點(diǎn)有
    的頭像 發(fā)表于 09-25 15:53 ?3506次閱讀
    <b class='flag-5'>Kubernetes</b>架構(gòu)和核心組件組成 <b class='flag-5'>Kubernetes</b>節(jié)點(diǎn)“<b class='flag-5'>容器</b><b class='flag-5'>運(yùn)行時</b>”技術(shù)分析

    各種容器運(yùn)行的作用是什么

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

    FPGA運(yùn)行時重構(gòu)的延遲隱藏機(jī)制研究與實(shí)現(xiàn)

    FPGA運(yùn)行時重構(gòu)的延遲隱藏機(jī)制研究與實(shí)現(xiàn)_劉偉
    發(fā)表于 01-07 19:08 ?0次下載

    紫金橋組態(tài)軟件新的功能_運(yùn)行時組態(tài)

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

    CRI 與 ShimV2:一種 Kubernetes 集成容器運(yùn)行時的新思路

    年,由 containerd 社區(qū)主導(dǎo)的 shimv2 API 的出現(xiàn),在 CRI 的基礎(chǔ)上,為用戶集成自己的容器運(yùn)行時帶來了更加成熟和方便的實(shí)踐方法。本次演講分享了關(guān)于 Kubernete
    發(fā)表于 12-20 17:05 ?167次閱讀

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

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

    如何高效測量ECU的運(yùn)行時

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

    Go運(yùn)行時:4年之后

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

    怎樣避免電力電容器運(yùn)行時漏油

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

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

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

    ch32v307記錄程序運(yùn)行時

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

    Xilinx運(yùn)行時(XRT)發(fā)行說明

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

    如何保證它們容器運(yùn)行時的安全?

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

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

    JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫,它是Java編程語言的運(yùn)行環(huán)境。JVM的主要功能是將Java源代碼轉(zhuǎn)換為機(jī)器代碼,并且在運(yùn)行時管理Java程序的內(nèi)存。JVM
    的頭像 發(fā)表于 12-05 14:08 ?571次閱讀
    阴宅24水口| 德州扑克保险赔率| 网络百家乐官网免费试玩| 机器百家乐官网作弊| 百家乐麻将牌| 百家乐官网打闲赢机会多| 金木棉百家乐的玩法技巧和规则| 百家乐官网庄闲和概率| 百家乐大小技巧| 五常市| 百家乐娱乐城返水| 金门县| 百家乐游戏接口| 如何看百家乐官网的路纸| 真人百家乐国际第一品牌| 百家乐官网光纤洗牌机如何做弊| 伯爵百家乐的玩法技巧和规则 | 德州扑克网上平台| 百家乐真钱在线| 太和县| A8百家乐娱乐| 澳门百家乐官网图形| 大发888 大发888游戏平台| 百家乐官网路书| 赌场风云剧情介绍| 至尊百家乐娱乐| 百家乐官网五星宏辉怎么玩| 大发888 打法888 大发官网 | 德州扑克现金桌视频| 百家乐五局八星| 百家乐官网注码技巧| 百家乐正品| 马德里百家乐官网的玩法技巧和规则| 365体育投注| 百家乐博娱乐平台| 百家乐官网怎样玩的| 和乐娱乐| 好运来百家乐的玩法技巧和规则 | 百家乐官网投注技巧建议| 百家乐过滤| 做生意讲究风水吗|