kubernetes v1.24起官方推荐containerd作为容器运行时,核心是满足cri规范并正确配置systemdcgroup=true和sandbox_image镜像源;安装方式含包管理器(快捷)、二进制(可控)及kubeadm集成(k8s场景),需前置启用overlay/br_netfilter、配置sysctl网络参数、关闭swap。

Linux 中安装 Containerd 作为容器运行时,核心是满足 Kubernetes CRI(Container Runtime Interface)规范,并确保与 systemd、cgroup v2、网络插件等正确协同。从 Kubernetes v1.24 起,Docker 不再被直接支持,Containerd 成为主流且官方推荐的运行时,安装方式主要有三种:包管理器安装(最简单)、二进制安装(最可控)、以及通过 kubeadm 集成安装(面向 K8s 场景)。关键不在“装上”,而在“配对”——尤其是 SystemdCgroup = true 和 sandbox_image 镜像源替换 这两项,漏掉会导致 kubelet 启动失败或 Pod 无法创建。
确认系统前提和依赖
无论用哪种安装方式,以下准备必须完成:
- 启用内核模块:
overlay和br_netfilter(写入/etc/modules-load.d/containerd.conf并执行modprobe) - 配置 sysctl 参数:开启网桥流量转发(
net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1),写入/etc/sysctl.d/99-kubernetes-cri.conf后运行sysctl --system - 关闭 swap(
swapoff -a并注释/etc/fstab中 swap 行) - 安装基础依赖:如
ca-certificates、curl(Ubuntu/Debian)或yum-utils(RHEL/CentOS/Rocky)
推荐方式:包管理器一键安装(适合快速验证)
适用于 Ubuntu/Debian 或 RHEL/CentOS/Rocky 等主流发行版,省去手动下载和路径配置。
-
Ubuntu/Debian:添加 Docker 官方仓库后安装 containerd.io 包
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.listsudo apt-get update && sudo apt-get install -y containerd.io -
RHEL/CentOS/Rocky:启用 Docker CE 仓库或直接安装 RPM
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y containerd.io
或跳过仓库直接安装:sudo yum install -y https://github.com/containerd/containerd/releases/download/v1.7.19/containerd-1.7.19-1.el7.x86_64.rpm
生产推荐:二进制安装(可控、可审计、适配离线环境)
尤其适合 Kubernetes 集群节点部署,建议使用 cri-containerd-cni-*.tar.gz 全量包(含 runc + CNI 插件),避免版本错配。
- 下载并解压(以 v1.7.19 为例):
wget https://github.com/containerd/containerd/releases/download/v1.7.19/cri-containerd-cni-1.7.19-linux-amd64.tar.gzsudo tar Cxzvf /usr/local cri-containerd-cni-1.7.19-linux-amd64.tar.gz - 安装 systemd unit 文件:
sudo cp /usr/local/lib/systemd/system/containerd.service /etc/systemd/system/sudo systemctl daemon-reload - 生成并修改配置:
sudo mkdir -p /etc/containerdsudo containerd config default | sudo tee /etc/containerd/config.toml
编辑/etc/containerd/config.toml,重点修改两处:
•[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下的SystemdCgroup = true
•[plugins."io.containerd.grpc.v1.cri"]下的sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"(国内推荐阿里云镜像)
验证是否就绪
启动服务后,用 ctr 工具验证基础能力:
- 启动服务:
sudo systemctl enable --now containerd - 检查状态:
sudo systemctl status containerd(应为 active (running)) - 拉取 pause 镜像(K8s 必需):
sudo ctr -n k8s.io image pull registry.aliyuncs.com/google_containers/pause:3.9 - 查看镜像列表:
sudo ctr -n k8s.io image ls - Kubernetes 场景下,还需确保
kubelet配置指向/run/containerd/containerd.sock(默认路径)











