首页 > 其他分享 >Containerd-chep3-运行思路

Containerd-chep3-运行思路

时间:2024-05-21 11:18:28浏览次数:22  
标签:容器 调用 shim Containerd v2 chep3 runc containerd 思路

本文致力于梳理containerd的架构与运行原理。
参考文章:https://github.com/containerd/containerd/blob/main/core/runtime/v2/README.md
https://www.cnblogs.com/zhangmingcheng/p/17524721.html

核心运行思路

containerd使用Runtime v2并引入shim API,使得containerd可以和很多运行时集成。基于此,contaienrd仅仅作为协调下发容器配置、容器数据的高级管理器,实际由低级运行时启停管理容器。

举例:kubernetes调用containerd创建容器,containerd部署容器依赖的文件系统与提供必要配置信息,contained通知低级运行时启动pod

实现模式:

  • 单个二进制运行时,同时提供服务监听、启停等容器操作。
  • 提供一个分离的、只负责服务监听的shim垫片程序,其调用对应的单独的运行时引擎以启停容器等操作。

使用第二个模式可以做到更轻松的集成对各种容器运行时(仅需其符合OCI运行时规范),即可通过一个runtime shim处理ttRPC协议请求,便于同时使用多个不同的容器运行时引擎(Runtime Class)。

所以第二个模式也是默认模式,即runc作为默认运行时引擎,containerd调用containerd-shim-runc-v2垫片告知runc引擎对容器的启停等操作。

垫片与引擎

垫片由containerd调用,主要为containerd提供通信端口和配置信息,其在被启动时可以指定极少的参数,且是作为守护进程containerd-shim启动containerd-shim-runc-v2后立即退出,containerd-shim-runc-v2父进程就成为了systemd(1),这样containerd-shim-runc-v2就和containerd脱离了关系,即便containerd退出也不会影响到容器。

垫片在socket监听来自containerdttRPC命令,而后通过fork/exec调用引擎以启停容器等操作。如shim(io.containerd.runc.v2)调用runc

引擎如runc负责启停容器等操作,containerd默认提供了containerd-shim-runc-v2垫片以调用runcrunc再通过系统接口调用libcontainer启停容器等。

由于每个 shim 实例都作为守护进程与 containerd 进行通信,同时通过调用独立运行时来为容器建立父子关系,因此可以为多个容器和调用使用一个 shim。例如,您可以让一个containerd-shim-runc-v2容器与一个容器进行通信,并且它可以调用十个不同的容器。
垫片与容器可以是一对一或一对多的关系,常常Pod就是一对多。

流程:containerd 收到创建容器的请求,containerd布置容器的文件系统,并创建必要的容器配置信息,containerd调用shim,包括容器配置,它使用该信息来决定是否启动新的套接字侦听器(1:1 shim 到容器)或使用现有的侦听器(1:many).如果存在,则返回现有套接字的地址并退出;如果是新的,垫片创建一个新进程来在套接字上侦听来自 containerdttRPC命令,返回该套接字的地址给containerd后退出.containerdshim发送启动容器的命令,shim调用runc来创建/启动/停止容器。

标签:容器,调用,shim,Containerd,v2,chep3,runc,containerd,思路
From: https://www.cnblogs.com/yulinor/p/18203328

相关文章

  • skynet框架:单点服务性能优化思路
    skynet框架下的业务开发,单点服务是存在理论瓶颈的。当业务上存在并发请求的场景时,服务会成为性能热点,达到服务的消费瓶颈,出现过载。原则上讨论,当业务需求一个执行单位成为并发热点,那么实现这个执行单位就需要是足够支撑业务上限的方案。基于这个思路,讨论几个优化:解耦;降低过载......
  • 程序设计思路-球连球组成的群
    编码设计有很多思路,都是在简化映射实际问题时遇到的问题。之前和别人交流,得到一句“把它放在同一个地方好维护”,相同的功能只出现在一个地方。就会出现代码的聚合设计,也就是一种通用的功能索引,或者说面向对象的思想。首先程序可以被观察成,计算、存储、缓存、链接,这......
  • 多级审批流程设计方案以及开发思路
    工作流程设计说明顺序审核流程:各个审核节点依次逐级进行,每个节点上只能设置一个审核岗位或审核人,任意一个节点审核不通过将导致审核被驳回,不再继续流转到下一个节点。并行会审:审核节点需要多个人参与审核,所有审核人需同时审核通过才能进入下一个节点;任何一个人不同意都会......
  • (挖矿病毒清除)kdevtmpfsi 处理,其他挖矿软件也可用该思路清除
    1、Top命令线程运行情况,找到kdevtmpfsi对应的进程ID2、使用 kill-9PID3、过段时间再次被重启,说明有守护线程systemctlstatusPID查看其关联的守护进程,/tmp/kinsing  /tmp/kdevtmpfsi删除rm-rf/tmp/kinsingrm-rf/tmp/kdevtmpfsi4、crontab-l 命令先看看......
  • Linux 系统故障排查思路
    导读有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如......
  • containerd在线部署
    containerd的作用以及跟docker的区别Containerd是一个用于管理容器生命周期的开源项目。它最初是从Docker项目中分离出来的,现在已经成为了一个独立的项目。它可以用作容器镜像管理工具和容器运行时。它具有以下主要作用:帮助管理容器镜像。它可以下载,上传,删除容器镜像,并对镜像......
  • ocr结构化数据的思路
    本博客的图片均来自百度图片的搜索结果.讲解的demo图片.需求:结构化医疗数据,比如病例,入院记录等的信息.输出一个字典类型的key-value信息.解决方案:图像的矫正目前没找到太好的开源或者api接口来解决这个.https://cloud.tencent.com/product/tie腾讯的方案:可以看到......
  • AI agent的几种实现思路
    February24,2024提示工程学习笔记(二)在 上一篇笔记 中,我们学习了很多提示工程相关的技术,比如思维链(CoT)和最小到最多提示(Least-to-MostPrompting)等,显著改善了大模型的推理能力。尽管如此,我们常常还是会看到这样的现象:大模型可以准确地生成解决问题的逻辑步骤,但最终结果仍然......
  • 小程序框架+LLM,从融媒到智媒进化思路
    过去5年,媒体行业一直都在进行着信息化建设向融媒体平台建设的转变。一些融媒体的建设演变总结如下:新闻终端的端侧内容矩阵建设,如App新闻端,社交平台上的官方媒体等新闻+本地生活双旗舰客户端,兼顾主流媒体核心宣传,同时也在推进探索本地民生经营新平台重塑融媒体用户增长......
  • sql优化思路以及方式
    后端服务的性能优化是一个永恒的话题。这一篇随笔主要记录一下在各种业务场景下,sql优化的一些思路以及方式。note:DML(datamanipulationlanguage)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。DDL(datad......