Containerd 介绍

2021-08-22 container

早在 K8S 1.7 时,Containerd 已经作为运行时替换 Docker 了,只是大部分时候因为熟悉 Docker 会默认使用 docker-shim ,而在 1.24 版本起就彻底替换为了 Containerd 运行时。

这里简单介绍使用方式。

简介

在 containerd 安装包中主要包含如下内容。

  • containerd.service 通过 systmed 管理服务,用来管理 containerd 进程。
  • containerd-shim containerd-shim-runc-v2 runc 当守护进程通过 gRPC 收到请求后会该套件。

简单来说,管理进程收到请求后会调用 containerd-shim 进程,该进程会启动 containerd-shim-runc-v2 后退出,这样 containerd-shim-runc-v2 的父进程 PID 就会变成 1 被 systemd 托管,意味着与 containerd 脱离关系,即使该进程退出也不会影响到容器的运行。

另外,containerd-shim-runc-v2 会调用 runc 完成容器的创建、启动等操作,其实现了 OCI 标准,真正用来创建和维护容器,执行完之后同样退出,这样父进程就变成了 containerd-shim-runc-v2 命令。

默认配置文件保存在 /etc/containerd/config.toml,可以通过 containerd config default > /etc/containerd/config.toml 命令生成一个默认的配置文件。

常用命令

----- 所有Pod清单,也可以通过 --label env=prod
crictl pods --name PodName
----- 查看镜像,可以直接跟名称,或者通过 -q 只打印SHA256
crictl images
----- 容器列表
crictl ps -a
----- 在容器上执行某个命令
crictl exec -it 87d3992f84f74 /bin/bash
----- 获取日志,通过 --tail 表示获取最后几行
crictl logs --tail=1 87d3992f84f74