标签搜索

containerd安装与配置

mrui
2025-03-26 / 0 评论 / 65 阅读 / 正在检测是否收录...

新版本的kubernetes不在使用docker作为容器运行时,而是直接使用containerd。因此在安装kubernetes时需要安装containerd。

安装

安装containerd非常简单,配置好yum仓库,一条yum命令即可安装成功。

#containerd网络仓库配置
dnf install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加仓库自:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd

安装完成之后需要修改配置文件。containerd安装完成后会默认在/etc/containerd/目录下生成一个配置文件config.toml,但是该文件缺少很多信息,因此我们需要重新生成一个配置文件,然后对新生成的配置文件进行修改。

#生成新配置文件
containerd config default > /etc/containerd/config.toml

修改配置信息

修改Cgroup为systemd
在[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 下找到SystemdCgroup,将false改为true
修改sandbox镜像地址
把配置文件中的
sandbox_image = "registry.k8s.io/pause:3.6"
改为阿里云的地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"

sandbox_image 是容器运行时(如 containerd、CRI-O 等)或容器编排系统(如 Kubernetes)中一个关键配置参数,用于指定 沙箱容器(Sandbox Container) 的基础镜像。
沙箱容器是一个特殊的容器,用于为其他容器提供共享的底层环境(如网络、IPC 命名空间等)。例如:在 Kubernetes 中,每个 Pod 的第一个容器就是沙箱容器(称为 pause 容器),它负责维持 Pod 的网络命名空间。

配置镜像加速
# 修改配置文件,添加配置镜像加速相关信息的配置文件的路径
vim /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"
# 创建文件夹
mkdir -p /etc/containerd/certs.d/docker.io
#创建配置文件
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://docker.1ms.run"]
  capabilities = ["pull", "resolve"]
EOF

说明:该配置方式对crictl命令有效,对ctr命令无效,使用ctr下载镜像时,需要指定镜像的地址和版本,如: ctr --debug=true image pull docker.1ms.run/busybox:latest

tree containerd/
containerd/
├── certs.d
│   └── docker.io
│       └── hosts.toml
└── config.toml

2 directories, 2 files

安装crictl工具

#下载源码包
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.29.0/crictl-v1.29.0-linux-amd64.tar.gz
#解压缩
tar zxvf crictl-v1.29.0-linux-amd64.tar.gz -C /usr/local/bin
# -C:指定解压缩后文件存放的位置

修改配置文件

cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
# 重启containerd
systemctl restart containerd

或者通过命令行工具修改

crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock

安装cni插件

在没有安装cni插件时,containerd会报错缺少cni插件。

#下载安装包
wget https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz
#创建目录
mkdir -p /opt/cni/bin/
#解压缩
tar xzvf cni-plugins-linux-amd64-v1.4.0.tgz -C /opt/cni/bin/

修改配置文件

mkdir -p /etc/cni/net.d/
cat > /etc/cni/net.d/10-containerd-net.conflist <<EOF
{
  "cniVersion": "1.0.0",
  "name": "containerd-net",
  "plugins": [
    {
      "type": "bridge",
      "bridge": "cni0",
      "isGateway": true,
      "ipMasq": true,
      "promiscMode": true,
      "ipam": {
        "type": "host-local",
        "ranges": [
          [{
            "subnet": "10.88.0.0/16"
          }],
          [{
            "subnet": "2001:4860:4860::/64"
          }]
        ],
        "routes": [
          { "dst": "0.0.0.0/0" },
          { "dst": "::/0" }
        ]
      }
    },
    {
      "type": "portmap",
      "capabilities": {"portMappings": true}
    }
  ]
}
EOF

[root@rocky9 ~]# systemctl restart containerd
[root@rocky9 ~]# crictl info
 ……
#重启containerd即可
下载镜像示例
[root@node-001 docker.io]# crictl pull httpd
Image is up to date for sha256:83d938198316505b3aebd52bed1e54e5f2a49591cc41e09a30f480e5c00ea0cf
[root@node-001 docker.io]# crictl pull nginx
Image is up to date for sha256:53a18edff8091d5faff1e42b4d885bc5f0f897873b0b8f0ace236cd5930819b0
[root@node-001 docker.io]# crictl pull bitnami/php-fpm
Image is up to date for sha256:0fdfdfd1cd46d5ef32ed47af20e8ae3ad58b0f4d62516519994bf74b8f6611a5
[root@node-001 docker.io]# crictl images ls
IMAGE                                                TAG                 IMAGE ID            SIZE
docker.1ms.run/calico/cni                            v3.25.0             d70a5947d57e5       88MB
docker.1ms.run/calico/node                           v3.25.0             08616d26b8e74       87.2MB
docker.io/bitnami/php-fpm                            latest              0fdfdfd1cd46d       115MB
docker.io/library/httpd                              latest              83d9381983165       58.5MB
docker.io/library/nginx                              latest              53a18edff8091       72.2MB
registry.aliyuncs.com/google_containers/kube-proxy   v1.28.0             ea1030da44aa1       24.6MB
registry.aliyuncs.com/google_containers/pause        3.9                 e6f1816883972       322kB
0

评论 (0)

取消