从零开始入门 K8s:深入剖析 Linux 容器(13)

shim v1/v2 是什么
接下来讲一下 containerd 在 runtime 这边的大致架构 。 下面这张图是从 kata 官网拿过来的 , 上半部分是原图 , 下半部分加了一些扩展示例 , 基于这张图我们来看一下 containerd 在 runtime 这层的架构 。

如图所示:按照从左往右的一个顺序 , 从上层到最终 runtime 运行起来的一个流程 。

我们先看一下最左边 , 最左边是一个 CRI Client 。 一般就是 kubelet 通过 CRI 请求 , 向 containerd 发送请求 。 containerd 接收到容器的请求之后 , 会经过一个 containerd shim 。 containerd shim 是管理容器生命周期的 , 它主要负责两方面:

第一个是它会对 io 进行转发;

第二是它会对信号进行传递 。

图的上半部分画的是安全容器 , 也就是 kata 的一个流程 , 这个就不具体展开了 。 下半部分 , 可以看到有各种各样不同的 shim 。 下面介绍一下 containerd shim 的架构 。

推荐阅读