containerd containerd简介
目录
containerd containerd简介
containerd是什么
官方定义为k8s默认的官方容器运行时
containerd和k8s的关系:
- kubelet通过grpc协议和containerd交互。k8s规定了这个交互的规范,这就是大名鼎鼎的CRI。这里我们理解CRI为一个k8s定义的接口。它定义在 k8s.io/cri-api 中。只要实现了这套规范,就可以成为k8s的容器运行时。
- Containerd 创建一个容器时会创建一个containerd-shim进程,然后container-shim进程创建业务进程。
- 对于k8s中的pod,可以通过containerd创建一个pause 容器,然后创建业务容器,这两个容器共享特定的namespace即可
docker-containerd的作用
- 创建容器记录的metadata
- 请求 containerd 的 task 模块,task 模块会在 runtime 中创建 task 实例,分别会加入 task list, 监控 cgroup 等操作
- 每个 task 实例则调用 shim 去创建container
Containerd的运行优势
- container和docker不同,containerd重点是继承在大规模的系统中,例如kubernetes,而不是面向开发者,让开发者使用,更多的是容器运行时的概念,承载容器运行。
- 官方提供sdk,可以在工程中实现镜像、容器得全部操作。
- 从k8s的角度看,可以选择 containerd 或 docker 作为运行时组件:其中 containerd 调用链更短,组件更少,更稳定,占用节点资源更少。
- containerd 相比于docker , 多了 namespace 概念,每个 image 和 container 都会在各自的namespace下可见。
Containerd 启动流程
如图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!