早在 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