# Containerd 默认位置详解 -软件本身- -位置- -说明- containerd 二进制文件 /usr/local/bin/containerd containerd 主程序 containerd 配置文件 /etc/containerd/config.toml containerd 配置文件 containerd 服务文件 /etc/systemd/system/containerd.service systemd 服务单元文件 containerd 数据目录 /var/lib/containerd 存储容器和镜像数据 - 容器镜像 /var/lib/containerd/io.containerd.content.v1.content 存放所有拉取下来的容器镜像的内容(文件层) - 容器文件系统 /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs 存放容器运行时的文件系统数据 - 镜像元数据 /var/lib/containerd/io.containerd.metadata.v1 存放镜像的元数据信息,如标签、创建时间等 - 容器状态 /var/lib/containerd/io.containerd.state.v1 存放容器的运行状态信息 - 快照存储 /var/lib/containerd/io.containerd.snapshot.v1 存放容器的快照数据 持久化卷 (Volumes) /var/lib/kubelet/pods//volumes/ 存放 Kubernetes 持久化卷数据 containerd 日志文件 /var/log/containerd 日志文件位置(如果配置了日志) containerd 插件目录 /usr/local/lib/containerd 存放 containerd 插件 containerd.sock Unix 套接字文件 /run/containerd/containerd.sock 用于与 containerd 通信的套接字文件 containerd-shim 服务文件 /etc/systemd/system/containerd-shim@.service 用于管理容器生命周期的服务单元文件 containerd-shim 日志文件 /var/log/containerd-shim shim 的日志文件位置(如果配置了日志) containerd-shim 数据目录 /var/lib/containerd-shim shim 存储数据的位置 containerd-shim 插件目录 /usr/local/lib/containerd-shim 存放 containerd-shim 插件 containerd-shim Unix 套接字文件 /run/containerd-shim/.sock 用于与特定容器通信的套接字文件 # 方案规划: Containerd 数据目录:从 /var/lib/containerd 迁移到 /data/containerd/lib。 Kubelet 卷目录:从 /var/lib/kubelet 迁移到 /data/kubelet。我们将通过创建一个符号链接 (Symbolic Link) 来实现,这是最简单、最可靠的方法。 ## 步骤: # 安装 Containerd # 1. 安装所需的依赖包 dnf install -y yum-utils device-mapper-persistent-data lvm2 # 2. 添加 Docker 官方的 yum 仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 3. 安装 Containerd 软件包 (我们不需要完整的 Docker 引擎) dnf install -y containerd.io # 建自定义数据目录 mkdir -p /data/containerd/lib mkdir -p /data/kubelet # 生成默认配置文件 containerd config default | tee /etc/containerd/config.toml ## 修改配置文件 # 编辑 /etc/containerd/config.toml 文件,进行以下修改: # 1. 数据目录:将 root 和 state 指向我们的自定义路径 sed -i 's|root = "/var/lib/containerd"|root = "/data/containerd/lib"|g' /etc/containerd/config.toml sed -i 's|state = "/run/containerd"|state = "/data/containerd/state"|g' /etc/containerd/config.toml # 2. SystemdCgroup: 将其设置为 true, 这是 Kubernetes 推荐的配置,可以更好地与系统的 cgroup 管理器集成。 sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml # 3. 换阿里云的镜像源 sed -i 's#sandbox_image = "registry.k8s.io/pause:3.8"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.10.1"#g' /etc/containerd/config.toml # 保存并关闭文件 # 为 Kubelet 卷目录创建符号链接 # 1. 如果 /var/lib/kubelet 目录已存在,先删除它 rm -rf /var/lib/kubelet # 2. 创建一个从默认路径到我们自定义路径的符号链接 ln -s /data/kubelet /var/lib/kubelet ## 启动并设置 Containerd 开机自启 # 重新加载 systemd 配置 systemctl daemon-reload # 启动 containerd 服务 systemctl start containerd # 设置 containerd 开机自启 systemctl enable containerd # 重启 containerd 服务 systemctl restart containerd # 查看 containerd 服务状态,确保其为 active (running) systemctl status containerd