# 第一步:安装依赖工具
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
# 第二步:配置内核参数(容器网络需要)
# 加载 overlay 和 br_netfilter 模块
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 配置 sysctl 参数(永久生效)
sudo tee /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system # 立即生效
# 第三步:安装 containerd
# 方式1:通过 apt 安装(推荐,适配 Ubuntu 24.04 官方源)
sudo apt install -y containerd
# 方式2:手动下载指定版本(如需特定版本,如 1.7.11)
# curl -L https://github.com/containerd/containerd/releases/download/v1.7.11/containerd-1.7.11-linux-amd64.tar.gz | sudo tar -C /usr/local -xzf -
# 第四步:生成 containerd 默认配置文件
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
# 第五步:修改配置(适配 K8s,关键步骤)
# 设置 sandbox_image 为 K8s 官方 pause 镜像(避免拉取失败)
sudo sed -i 's#sandbox_image = "registry.k8s.io/pause:3.6"#sandbox_image = "registry.k8s.io/pause:3.10"#g' /etc/containerd/config.toml
# 设置 SystemdCgroup 为 true(兼容 systemd 控制系统)
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
# 第六步:启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl start containerd
sudo systemctl enable containerd
# 第七步:验证安装结果
echo "=== containerd 版本 ==="
containerd --version
echo "=== containerd 服务状态 ==="
sudo systemctl status containerd --no-pager
关键说明:
依赖与内核配置:
安装前需加载overlay
(容器存储驱动依赖)和br_netfilter
(网络转发依赖)模块,并配置内核参数确保网络正常。配置文件修改原因:
sandbox_image
:指定 K8s 所需的 pause 镜像(与 K8s 1.28 兼容的 3.10 版本),避免默认镜像拉取失败。SystemdCgroup = true
:让 containerd 使用 systemd 作为 cgroup 驱动,与 K8s 的 kubelet 配置保持一致,避免资源管理冲突。
验证成功标志:
containerd --version
输出版本信息(如containerd github.com/containerd/containerd v1.7.xxxx
)。systemctl status containerd
显示active (running)
。
与 K8s 集成:
后续初始化 K8s 集群时,需指定 containerd 端点:bash
sudo kubeadm init --cri-socket unix:///run/containerd/containerd.sock ...
安装依赖工具 更新软件源 确保系统软件包列表为最新: bash sudo apt update 作用:同步软件源索引,获取最新的软件包信息。 安装基础工具 安装包含网络工具、证书管理等在内的基础依赖: bash sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 作用:提供 HTTPS 下载、证书验证、curl 工具等必要组件。 步骤 2:配置内核参数(容器网络必需) 加载内核模块 启用容器存储和网络所需的内核模块: bash sudo tee /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter 作用: overlay:容器存储驱动(用于镜像分层)。 br_netfilter:网络桥接支持(用于容器跨主机通信)。 配置系统参数 确保网络转发和桥接规则生效: bash sudo tee /etc/sysctl.d/99-kubernetes-cri.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system 作用: 允许容器通过主机网络接口转发流量。 确保桥接流量被 iptables 正确处理。 步骤 3:安装 containerd 主程序 通过 apt 安装(推荐) 使用 Ubuntu 官方源安装最新稳定版: bash sudo apt install -y containerd 作用:自动下载并安装 containerd 及其依赖(如 runc、libseccomp 等)。 手动安装特定版本(可选) 若需指定版本(如 1.7.11),可手动下载并解压: bash curl -L https://github.com/containerd/containerd/releases/download/v1.7.11/containerd-1.7.11-linux-amd64.tar.gz | sudo tar -C /usr/local -xzf - 注意:需确保下载的二进制文件与系统架构(如 x86_64)匹配。 步骤 4:生成并修改默认配置 创建配置目录并生成默认文件 bash sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml 作用:生成包含默认参数的配置文件,供后续调整。 修改关键配置项 设置 K8s 兼容的 pause 镜像: bash sudo sed -i 's#sandbox_image = "registry.k8s.io/pause:3.6"#sandbox_image = "registry.k8s.io/pause:3.10"#g' /etc/containerd/config.toml 原因:pause 镜像是 K8s 管理 Pod 的基础,需与 K8s 版本兼容(如 K8s 1.28 推荐使用 3.10)。 启用 systemd cgroup 驱动: bash sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml 原因:与 K8s 的 kubelet 配置保持一致,确保资源管理正常。 步骤 5:启动并验证服务 重载 systemd 配置并启动服务 bash sudo systemctl daemon-reload sudo systemctl start containerd sudo systemctl enable containerd 作用:启动 containerd 服务并设置开机自启。 验证安装结果 检查版本: bash containerd --version 预期输出:显示版本信息(如 containerd github.com/containerd/containerd v1.7.11)。 检查服务状态: bash sudo systemctl status containerd --no-pager 预期输出:显示 active (running),且无错误日志。 测试容器运行(可选): bash sudo ctr run --rm docker.io/library/hello-world:latest hello