该文档 基于 *** 作系统 centos7
概述containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性,containerd 可以负责干下面这些事情:
- 管理容器的生命周期(从创建容器到销毁容器)
- 拉取/推送容器镜像
- 存储管理(管理镜像及容器数据的存储)
- 调用 runc 运行容器(与 runc 等容器运行时交互)
- 管理容器网络接口及网络
1、下载
wget https://github.com/containerd/containerd/releases/download/v1.5.7/cri-containerd-cni-1.5.7-linux-amd64.tar.gz
2、查看压缩包包含哪些文件
# tar -tf cri-containerd-cni-1.5.7-linux-amd64.tar.gz ...... usr/ usr/local/ usr/local/bin/ usr/local/bin/crictl usr/local/bin/containerd-shim-runc-v1 usr/local/bin/containerd-shim-runc-v2 usr/local/bin/containerd-shim usr/local/bin/critest usr/local/bin/ctr usr/local/bin/containerd-stress usr/local/bin/containerd usr/local/bin/ctd-decoder usr/local/sbin/ usr/local/sbin/runc ......
3、解压安装到各个目录
tar -zxvf cri-containerd-cni-1.5.7-linux-amd64.tar.gz -C /
注意:确认可执行文件所在目录在PATH环境变量中
4、生成配置文件
containerd 的默认配置文件为 /etc/containerd/config.toml,我们可以通过如下所示的命令生成一个默认的配置:
# mkdir /etc/containerd # containerd config default > /etc/containerd/config.toml启动
由于上面下载的 containerd 压缩包中包含一个 etc/systemd/system/containerd.service 的文件,这样我们就可以通过 systemd 来配置 containerd 作为守护进程运行
# systemctl start containerd && systemctl enable containerd
启动成功后,查看版本
# ctr version
containerd.service文件
[Unit] Description=containerd container runtime documentation=https://containerd.io After=network.target local-fs.target [Service] ExecStartPre=-/sbin/modprobe overlay ExecStart=/usr/local/bin/containerd Type=notify Delegate=yes KillMode=process Restart=always RestartSec=5 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNPROC=infinity LimitCORE=infinity LimitNOFILE=infinity # Comment TasksMax if your systemd version does not supports it. # only systemd 226 and above support this version. TasksMax=infinity OOMScoreAdjust=-999 [Install] WantedBy=multi-user.target
这里有两个重要的参数:
Delegate: 这个选项允许 containerd 以及运行时自己管理自己创建容器的 cgroups。如果不设置这个选项,systemd 就会将进程移到自己的 cgroups 中,从而导致 containerd 无法正确获取容器的资源使用情况。
KillMode: 这个选项用来处理 containerd 进程被杀死的方式。默认情况下,systemd 会在进程的 cgroup 中查找并杀死 containerd 的所有子进程。KillMode 字段可以设置的值如下。
- control-group:当前控制组里面的所有子进程,都会被杀掉
- process:只杀主进程
- mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
- none:没有进程会被杀掉,只是执行服务的 stop 命令
需要将 KillMode 的值设置为 process,这样可以确保升级或重启 containerd 时不杀死现有的容器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)