containerd
更新时间:2025年3月19日 15:46
浏览:4443
官方网址
https://github.com/containerd/containerd
官方安装说明
https://github.com/containerd/containerd/blob/main/docs/getting-started.md
三种安装方式:二进制文件、apt、源码编译
二进制文件安装
安装 containerd
#!/bin/sh
wget https://github.com/containerd/containerd/releases/download/v1.7.14/containerd-1.7.14-linux-amd64.tar.gz
# wget https://nas.liu12.com/k8s/containerd/containerd-1.7.14-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.7.14-linux-amd64.tar.gz
安装包中已内置 k8s CRI
配置开机启动 containerd.service
#!/bin/sh
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
# wget https://nas.liu12.com/k8s/containerd/containerd.service
cp containerd.service /usr/local/lib/systemd/system/containerd.service
systemctl daemon-reload
systemctl enable containerd
优化配置
#!/bin/sh
# 生成 containerd 默认配置文件
containerd config default > /etc/containerd/config.toml
# 修改容器存放目录
# mkdir -p /data/containerd
# sed -i 's/root = "\/var\/lib\/containerd"/root = "\/data\/containerd"/g' /etc/containerd/config.toml
# 将 sandbox_image 改为阿里镜像,方便国内安装
sed -i 's/registry.k8s.io\/pause:/registry.aliyuncs.com\/google_containers\/pause:/g' /etc/containerd/config.toml
# 配置 systemd cgroup 驱动
# https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/#containerd-systemd
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
# 重启 containerd
systemctl restart containerd
如果需要在国内从 docker.io 官方拉取镜像,可能会拉取失败,可指定 dooker.io 镜像
编辑 /etc/containerd/config.toml,
找到 plugins."io.containerd.grpc.v1.cri".registry.mirrors,在后边添加两行:
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://xxx.xxx.com"]
systemctl restart containerd 重启 containerd 即可
containerd 依赖两个组件 runc 和 cni
安装 runc
#!/bin/sh
wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64
# wget https://nas.liu12.com:8443/k8s/runc/v1.1.12/runc.amd64
install -m 755 runc.amd64 /usr/local/sbin/runc
安装 cni
containerd 官方文档中要求安装 cni,主动安装 cni 容易出问题,可能是需要改 k8s 参数,
实际操作中k8s会自动创建 cni ,实践过多次,可以不安装,下面的代码仅供参考
#!/bin/sh
wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz
# wget https://nas.liu12.com/k8s/cni/cni-plugins-linux-amd64-v1.4.1.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.1.tgz
apt 方式
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install containerd.io
systemctl enable containerd
apt 安装的方式也需要 优化配置,参考二进制安装方式
源码编译
crictl
安装 containerd 后,已内置了镜像管理工具 ctr
对于熟悉 docker 使用的初学者,可以使用 crictl 管理 containerd 镜像,与 docker 命令基本一样
官方安装说明:
https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
#!/bin/sh
VERSION="v1.26.0" # check latest version in /releases page
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
# wget https://nas.liu12.com/k8s/crictl/crictl-$VERSION-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz
# 配置 crictl 管理 containerd
cat >/etc/crictl.yaml <<EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
EOF