k8s初始化报错 [ERROR CRI]: container runtime is not running: ......

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、环境参数
  • 二、报错内容
  • 三、解决方式
    • [1. 查看containerd状态](#1. 查看containerd状态)
    • [2. config.toml文件查看](#2. config.toml文件查看)
    • [3. 修改文件](#3. 修改文件)
    • [4. 重启containerd](#4. 重启containerd)
  • 四、原因分析及参考
    • [1. 一个关于版本的背景故事](#1. 一个关于版本的背景故事)
    • [2. 关于containerd的介绍](#2. 关于containerd的介绍)
    • [3. 报错内容中的内容分析](#3. 报错内容中的内容分析)
    • [4. containerd安装的默认禁用(重点)](#4. containerd安装的默认禁用(重点))

一、环境参数

  • linux系统为ubuntu版本为22.04.3
  • kubernetes版本为1.28.2
  • containerd版本为1.6.25
  • 虚拟机软件vmware pro 17

二、报错内容

执行初始化命令kubeadm init命令时报错,内容如下

l 复制代码
error execution phase preflight: [preflight] Some fatal errors occurred:
        [ERROR CRI]: container runtime is not running: output: time="2023-12-07T06:26:18Z" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
, error: exit status 1

三、解决方式

参考第四部分的第4小节

1. 查看containerd状态

l 复制代码
systemctl status containerd

如果containerd正常运行(Active状态为active(running))

如下

2. config.toml文件查看

查看containerd的config.toml文件

l 复制代码
cat /etc/containerd/config.toml

3. 修改文件

如果有内容如下

l 复制代码
disabled_plugins = ["cri"]

则修改文件

l 复制代码
sudo vim /etc/containerd/config.toml

按i进入编辑模式,注释掉

l 复制代码
#disabled_plugins = ["cri"]

或者将"cri"删掉,如下

l 复制代码
disabled_plugins = []

按esc退出编辑然后按shift+zz保存退出

4. 重启containerd

修改的内容重启后生效

l 复制代码
systemctl restart containerd

四、原因分析及参考

1. 一个关于版本的背景故事

根据k8s官网的介绍,kubernets 自v 1.24.0 后,移除了 docker.shim(k8s集成的docker),替换采用 containerd 作为容器运行时。因此需要安装 containerd

而containerd是docker的子项目,现在他俩分开了,所以可以单独安装containerd

2. 关于containerd的介绍

常用的容器运行时有docker、containerd、CRI-O等

containerd是一个CRI(Container Runtime Interface)组件,在容器运行时调用containerd组件来创建、运行、销毁容器等

CRI组件遵循OCI规范,通过runc实现与操作系统内核的交互,然后实现创建和运行容器

docker使用containerd作为运行时,k8s使用containerd、CRI-O等

3. 报错内容中的内容分析

CRI Container Runtime Interface 容器运行时接口

container runtime is not running 容器运行时未启动

validate service connection 无效的服务连接

CRI v1 runtime API is not implemented for endpoint "unix:///var/run/containerd/containerd.sock" 容器运行时接口 v1 运行时 接口 没有实现节点文件sock,应该就是此文件未找到

4. containerd安装的默认禁用(重点)

使用安装包安装的containerd会默认禁用作为容器运行时的功能,即安装包安装containerd后默认禁用containerd作为容器运行时

这个时候使用k8s就会报错了,因为没有容器运行时可以用

开启方法就是将/etc/containerd/config.toml文件中的disabled_plugins的值的列表中不包含cri

修改后重启containerd才会生效


感谢阅读,祝君暴富!

相关推荐
罗小爬EX12 小时前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
java_logo13 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb14 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
打工仔折腾 AI18 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
fengkai454519 小时前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
分布式存储与RustFS20 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS1 天前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Eyfcom1 天前
〖物流云原生实战 01〗K8s Operator 在物流定时任务中的实践:从“裸 CronJob”到“声明式任务编排”
云原生·物流管理系统·物流云原生实战
阿里云云原生2 天前
阿里云智能体白皮书开源进展
云原生
阿里云云原生2 天前
万联智策基于 AgentCore 构建数字员工团队,800+智能体规模化落地
云原生