操作系统 K8S版本 containerd版本
Centos7.6 v1.24.12 v1.6.12

2、报错信息如下:

Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/k8s.io/2fa93d91b254ae6cfbd7acd1ce7b1a93c643da3aebfbe2bf08a7c2a697b7081e/log.json: no such file or directory): runc did not terminate successfully: exit status 127: unknown

如下图所示:
在这里插入图片描述

二、解决方法

说明:这个是说缺少依赖包libseccomp ,需要注意的是centos 7中yum下载的版本是2.3的,版本不满足我们最新containerd的需求,需要下载2.4以上的,故这里就安装一个 2.5.1 的版本。

#1、卸载旧版本
[root@k8s-master-49 opt]# rpm -qa | grep libseccomp
libseccomp-2.3.1-3.el7.x86_64
[root@k8s-master-49 opt]# rpm -e libseccomp-2.3.1-3.el7.x86_64 --nodeps
#2、安装新版本
[root@k8s-master-49 ~]# wget https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm
[root@k8s-master-49 ~]# rpm -ivh libseccomp-2.5.1-1.el8.x86_64.rpm 
#3、查看现有版本
[root@k8s-master-49 ~]# rpm -qa | grep libseccomp
libseccomp-2.5.1-1.el8.x86_64
[root@k8s-master-49 ~]# runc --version
runc version 1.1.4
libseccomp: 2.5.1

安装之后,不用重启containerd进程,就看到了目前pod的状态都正常了,如下图所示:
在这里插入图片描述

总结:这是一个关于容器管理工具 containerd.io依赖关系的错误。containerd.io要求安装版本为 2.4.0 的 libseccomp2 ,但系统上却安装了版本为2.3.1的libseccomp2。libseccomp 是一个 Linux系统调用安全限制库,它可以帮助限制程序对系统调用的访问权限。containerd.io作为容器管理工具,它需要使用 libseccomp来限制容器内部进程的系统调用权限。解决方案如下:

# 1、更新系统上的 libseccomp2 到 版本 2.4.0及以上版本。
# 2、如果不能更新 libseccomp2,可以尝试降低containerd.io的版本或者更换其他容器管理工具。
# 3、建议您在升级之前做好备份,并了解系统的影响

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

【错误解决】docker找不到runc:failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime
Error executing command: exit status 127 | 8a3209ebebdb83e2f4cb94e6428c05f3cfe6c27651ed5a77a9771a312b2ab6d7 docker: Error response from daemon: failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime error (o
1、RunC 是什么? RunC 是一个轻量级的工具,它是用来运行容器的,只用来做这一件事,并且这一件事要做好。 我们可以认为它就是个命令行小工具,可以不用通过 docker 引擎,直接运行容器。 事实上,runC 是标准化的产物,它根据 OCI 标准来创建和运行容器。 而 OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准 2、安装 runC RunC 是用 golang 创建的项目,因此编译它之前需要在本地安装 golang 的开发环境。 这个是说缺少依赖包 libseccomp ,需要注意的是centos 7中yum下载的版本是2.3的,版本不满足我们最新containerd的需求,需要下载2.4以上的,所以我们先下载2.5.1版本的 libseccomp: libseccomp 2.5.1 版本下载地址 卸载旧版本: 安装新版本的: 查看现有版本:
之前搞了很久 一直报这个错误 错误日志也就显示这一条 看了stackoverflow上报这个错误的文章也没有什么解决方案 主要原因我也不知道 可能是由于docker容器ip的原因 还是要先检查一下防火墙端口打开没有 用elasticsearch5.x版本没遇到这种问题 升级了就遇到了 直到我找到了个这文章点击这里 把之前elasticsearch和kibana停掉 重新run elasticsearch: docker run -it -e ES_JAVA_OPTS="-Xms256m -Xmx25
kibana报错:Unable to revive connection: http://localhost:9200/ 第一种情况(新手): 先把elasticsearch.bat打开,再打开kibana.bat,原因主要是不打开elasticsearch自然生成不了地址,kibana自然也就找不到地址。如果不行请采用第二种或第三种。 第二种方法: 通过docker创建网络,如 xxxnet,然后es和kibana启动的时候都加上 --network xxxnet ,kibana.yml中的配置改成如下:
docker: Error response from daemon: OCI runtime create failed: unable to retrieve OCI runtime error
这个错误通常意味着 Docker 在创建容器时遇到了问题。可能有多种原因导致此错误,包括配置问题、权限问题或操作系统相关问题。以下是一些常见的解决方法: 1. 检查 Docker 配置:确保 Docker 的配置正确,并且没有任何语法错误或缺失的配置项。可以通过编辑 `/etc/docker/daemon.json` 文件来检查并修复配置问题。 2. 检查权限问题:确保当前用户具有运行 Docker 的权限。您可以添加用户到 `docker` 组中,并重新登录以使更改生效。例如,可以运行以下命令将用户添加到 `docker` 组: sudo usermod -aG docker your_username 3. 检查操作系统相关问题:有时,特定操作系统版本或内核版本可能与 Docker 不兼容。尝试更新操作系统、内核或 Docker 版本,看是否解决了问题。 4. 清理 Docker:有时,Docker 容器或镜像的残留文件可能导致问题。尝试清除不需要的容器、镜像和卷,并重新尝试创建容器。 docker system prune 如果上述方法都没有解决问题,建议您查看 Docker 的日志以获得更多详细信息。可以通过以下命令查看 Docker 日志: sudo journalctl -u docker.service 日志中可能会提供有关错误的更多上下文信息,以便更好地定位和解决问题。如果问题仍然存在,建议您在 Docker 官方论坛或社区上寻求帮助。