You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

kubeadm init执行时出现CRI容器运行时相关错误的解决办法求助

kubeadm init执行时出现CRI容器运行时相关错误的解决办法

看起来你在执行kubeadm init的时候碰到了containerd相关的CRI兼容性问题,别慌,这是个挺常见的问题,我来帮你一步步解决它。

问题原因

这个错误的核心是:kubeadm现在默认要求使用CRI v1版本的API,但你的containerd要么没启用这个API接口,要么版本太低不支持该API,导致kubeadm无法和containerd正常通信。

具体解决步骤

  1. 检查并升级containerd版本
    首先确认你的containerd版本,CRI v1是从containerd 1.6.x版本开始默认支持的,执行命令查看版本:

    containerd --version
    

    如果版本低于1.6.x,建议先升级到最新稳定版(比如1.7.x系列),不同系统的升级方式略有不同,比如Debian/Ubuntu可以通过官方源更新,CentOS/RHEL可以用yum/dnf安装最新包。

  2. 配置containerd的CRI接口
    很多时候默认的containerd配置没有完全开启CRI相关服务,我们需要手动调整:

    • 先生成默认配置文件(如果没有的话):
      containerd config default > /etc/containerd/config.toml
      
    • 编辑这个配置文件/etc/containerd/config.toml:
      • 找到disabled_plugins这一行,如果里面包含"cri",把它删掉(这是关键!很多人这里没改导致失败);
      • 找到[plugins."io.containerd.grpc.v1.cri"]区块,确保enable_runtime_service = true(默认应该是true,但可以确认下);
      • 找到[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc],确保runtime_type = "io.containerd.runc.v2",这是推荐的运行时类型。
  3. 重启containerd服务
    配置修改后,必须重启containerd才能生效:

    systemctl restart containerd
    

    可以用下面的命令确认服务是否正常运行:

    systemctl status containerd
    

    看到active (running)就没问题了。

  4. 重新执行kubeadm init
    现在再尝试执行kubeadm init,如果还是识别不了CRI套接字,可以手动指定:

    kubeadm init --cri-socket unix:///var/run/containerd/containerd.sock
    

临时应急方案(不推荐优先使用)

如果你只是想快速跳过预检查(不建议生产环境这么做),可以使用--ignore-preflight-errors参数忽略CRI错误:

kubeadm init --ignore-preflight-errors=CRI

但这只是绕过检查,并没有解决根本问题,后续可能还会出现其他容器运行相关的故障,所以优先推荐前面的步骤。

备注:内容来源于stack exchange,提问作者MANISH DUBEY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 16:02:55