Containerd CRI 集成:驱动现代 Kubernetes 集群的静默引擎

GitHub April 2026
⭐ 904
来源:GitHub归档:April 2026
Containerd 的容器运行时接口(CRI)插件已完成从独立代码库到核心组件的蜕变,全面并入 containerd 主项目。此次技术整合标志着 Kubernetes 默认容器运行时的成熟,不仅简化了开发流程,更巩固了全球云原生技术栈的关键一环。此举预示着容器运行时正朝着更深度的集成与标准化演进。

GitHub 仓库 `containerd/cri` 已正式归档,该仓库曾承载着 containerd 对 Kubernetes 容器运行时接口(CRI)的实现。其代码现已完整集成至主仓库 `containerd/containerd` 的 `pkg/cri` 目录下。这一管理层面的变更反映了一次重大的技术与理念演进:CRI 插件不再是可选附加组件,而是 containerd 本身固有且核心的组成部分。自 Kubernetes 1.24 版本弃用以 Docker 为中心的 `dockershim` 后,containerd 便成为默认容器运行时,其性能与稳定性对整个生态系统至关重要。CRI 插件正是关键的翻译层,它使得 Kubernetes kubelet 能够与 containerd 通信,将诸如创建 Pod 沙箱、运行容器等指令,翻译成 containerd 内部服务能够理解的调用。此次合并简化了贡献流程,统一了发布周期,并消除了维护两个独立代码库带来的开销,进一步强化了 containerd 作为生产级 Kubernetes 基石的地位。

技术深度解析

Containerd CRI 插件的架构是高效抽象的典范。它作为 gRPC 服务器运行于 containerd 守护进程内部,精确实现了 Kubernetes CRI 定义的协议。该插件并不直接管理容器,而是扮演一个精密的控制器角色,将 CRI 请求(例如 `RunPodSandbox`、`CreateContainer`)翻译成对 containerd 内部服务的调用。

其性能的关键在于消除了中间守护进程。与旧有的 `dockershim` 模型(将 CRI 翻译为 Docker API 调用)不同,CRI 插件直接使用 containerd 原生的 `TaskService` 和 `ImageService`。当创建一个 Pod 时,插件调用 `containerd.NewContainer` 来创建符合 OCI 规范的容器包,然后通过 `container.NewTask` 并借助 运行时垫片(如 `runc-shim` 或 `gvisor-shim`)来启动容器进程。至关重要的是,这个垫片是一个轻量级、受管理的进程,而非重量级守护进程。该插件还负责管理复杂的 Pod 语义:它创建 Pod 的 pause 容器(持有命名空间的基础设施容器),通过调用 Flannel 或 Calico 等插件配置 CNI 网络,并管理 Pod 的 cgroups 层级。

一个主要的技术亮点是其镜像管理。CRI 插件直接利用了 containerd 的内容寻址存储(CAS)和快照系统。拉取镜像时,它使用 containerd 高效的分发层,该层支持延迟拉取(例如通过 `stargz-snapshotter`)以及与 Dragonfly 等项目集成的点对点分发。这种直接集成避免了分层架构中存在的序列化/反序列化开销。

性能基准测试 consistently 显示,集成 CRI 插件的 containerd 性能优于传统的基于 Docker 的方案,并与 CRI-O 不相上下。其主要优势在于降低了容器启动延迟,这对于无服务器和批处理环境中常见的短生命周期 Pod 尤为重要。

| 运行时 | Pod 启动延迟(50%分位) | Pod 启动延迟(99%分位) | 内存开销(守护进程) | 关键差异点 |
|---|---|---|---|---|
| containerd (with CRI) | 320 毫秒 | 850 毫秒 | ~40 MB | 深度集成,单一守护进程,成熟的存储层 |
| CRI-O | 310 毫秒 | 820 毫秒 | ~35 MB | 极简主义,专为 Kubernetes 打造 |
| Docker + dockershim (传统) | 450 毫秒 | 1200 毫秒 | ~100 MB+ | 双守护进程(Docker、shim),抽象成本高 |

数据解读: 数据显示,containerd 和 CRI-O 的延迟均显著低于且比已弃用的 dockershim 方案更可预测。由于极简设计,CRI-O 在原始速度上略有优势。然而,containerd 略高的开销换来了更广泛的功能集(例如更优越的快照生态系统)以及更广泛生产部署所带来的稳定性。

如今,集成已如此彻底,以至于像由 CRIU 维护者等研究人员开创的容器实时迁移(检查点/恢复)等显著功能,也正通过 CRI 插件暴露出来,从而为 Kubernetes 中的有状态工作负载开启了高级用例。

关键参与者与案例研究

Containerd CRI 的发展由云巨头和开源社区联盟共同推动。Google 是主要的架构师和推动者,因为 containerd 的 CRI 集成是 Google Kubernetes Engine (GKE) 的基石。Google 对其托管服务需要轻量级、可靠运行时的需求,直接推动了将 CRI 移入 containerd 核心的投资。Microsoft 是另一位重量级贡献者,将 containerd 用作 Azure Kubernetes Service (AKS) 的默认运行时,并将其深度集成到 Windows Server 容器中。将 containerd 捐赠给 CNCF 的 Docker Inc.,仍然是关键维护者,确保该运行时能与 Docker 开发者工具和 Docker Desktop 无缝协作。

其主要竞争者是 CRI-O,这是一个由 Red Hat(现属 IBM)专门为 Kubernetes 从头构建的运行时。CRI-O 的理念是“刚刚好的运行时”,剥离了 CRI 不需要的任何功能。这使其成为 Red Hat OpenShift 的默认选择,也是性能至上部署场景中的宠儿。

| 组织 | 主要运行时 | 战略依据 | 显著部署 |
|---|---|---|---|---|
| Google | containerd | 控制力、稳定性,以及与 Borg/Omega 遗产的深度集成。驱动 GKE Autopilot。 | Google Kubernetes Engine(所有层级) |
| Amazon | containerd | 与 AWS 的 Firecracker 微虚拟机(用于 Fargate)对齐;偏好成熟、广泛的生态系统。 | Amazon EKS, AWS Fargate |
| Microsoft | containerd | 跨平台支持(Linux/Windows),与 Azure 技术栈集成。 | Azure Kubernetes Service |
| Red Hat/IBM | CRI-O | 极简主义,控制整个 K8s 技术栈,与 OpenShift 理念一致。 | Red Hat OpenShift, IBM Cloud Kubernetes Service |
| Alibaba | containerd | 为超大规模进行深度定制;

更多来自 GitHub

Open-CodeSign 横空出世:开源多模型架构,能否撼动 Claude Design 的统治地位?Open-CodeSign 标志着 AI 辅助设计领域的一次战略性演进,它将自己定位为 Anthropic 旗下 Claude Design 的灵活开源替代品。该项目由 OpenCoworkAI 开发,其核心能力在于允许开发者导入来自多个 容器引擎的无声革命:Containerd如何成为全球容器化浪潮的基石Containerd是容器运行时技术演进十年的结晶。它最初于2016年从Docker核心中剥离并捐赠给CNCF,其设计初衷就是成为一个专注、稳定且供应商中立的组件。它的核心使命非常单一:以最高的可靠性管理容器的完整生命周期——包括镜像传输、Docker 引擎仓库迁移:Moby 项目如何重塑开源治理格局docker/engine 仓库被标记为归档状态,是 Docker 有意将其核心开发工作整合至上游 moby/moby 仓库的战略举措。这一转变始于 Docker Engine 20.10 版本,其背后是旨在简化开发流程、减少碎片化,并为驱查看来源专题页GitHub 已收录 951 篇文章

时间归档

April 20262138 篇已发布文章

延伸阅读

容器引擎的无声革命:Containerd如何成为全球容器化浪潮的基石在Docker炫目的界面与Kubernetes复杂的编排系统之下,Containerd如同一个沉默的工业级引擎。作为两大平台的默认容器运行时,这个已从云原生计算基金会(CNCF)毕业的项目,正默默支撑着全球数十亿容器的生命周期。它的稳定与性containerd/runwasi:如何为下一代计算架起WebAssembly与容器生态的桥梁containerd/runwasi项目在成熟的容器编排世界与新兴的WebAssembly范式之间构建了基础性桥梁。通过让containerd原生以容器形式调度和管理Wasm/WASI工作负载,它为无服务器和边缘环境解锁了高密度、快速启动的Kubernetes 斩获 120 万星标:谷歌容器编排器如何成为云时代的操作系统Kubernetes 在 GitHub 上的星标数已突破 120 万,稳固了其作为现代云计算基础层的地位。本文将深入探讨谷歌这款开源容器编排器如何从一个内部工具,演变为价值超 500 亿美元的庞大生态,并重塑企业构建与部署软件的方式。我们将Kubeflow Manifests:争夺企业AI平台标准化的关键战役Kubeflow Manifests项目是驯服企业AI部署复杂性的关键一步。它通过提供一套精心编排、版本对齐的Kubernetes清单,旨在将Kubeflow从一组强大但松散的工具,转变为一个统一、生产就绪的平台。此举直指阻碍机器学习工业化

常见问题

GitHub 热点“Containerd CRI Integration: The Silent Engine Powering Modern Kubernetes Clusters”主要讲了什么?

The GitHub repository containerd/cri, which once housed the implementation of the Kubernetes Container Runtime Interface (CRI) for containerd, has been officially archived. Its cod…

这个 GitHub 项目在“containerd CRI plugin vs CRI-O performance benchmark 2024”上为什么会引发关注?

The containerd CRI plugin's architecture is a masterclass in efficient abstraction. It sits as a gRPC server within the containerd daemon, implementing the precise protocol defined by the Kubernetes CRI. The plugin does…

从“how to troubleshoot containerd CRI plugin pod sandbox errors”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 904,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。