一、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/containerdcontainerd提供了容器的生命周期管理、镜像管理等功能。在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-ocri-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
SiC评估板好不好看了就知道
杰理下载器的使用介绍
如何精准测量转速确保旋转机械正常运转
两部门呼吸加大直线马达应用力度
三种种常用的LED闪烁电路
什么是Kubernetes容器运行时CRI
快速靠近开关原理是什么
电化学传感器的使用寿命
华为首次对外解读C-V2X车联网战略 华为回应研发搬迁东莞为扩大规模
贴片头光电式位置传感器
国产手机OLED出货量激增,Q4手机OLED价格还将上涨
下一代Wi-Fi——Wi-Fi 6已经到来,峰值速度接近1.8 Gbps
AP1603升压变换电路-可为1.5V电池升压为3.3V或5V,AP1603 STEP-UP CONVERTER
可以根据负载轻松而精确地进行限流吗?
电孤故障断路器可多方位地守护大家的安全用电
LiFi有什么优势?什么样的光源可以用作LiFi可见光通信
openGauss数据库在可计算存储CSD上探索
观点:快充有前置条件,锂电池原理上不能快充
测试电容时有什么需要注意的地方?
苹果围绕自动化设备iPhone把iOS软体编辑得日臻完美