操作系统
|
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
的版本。
[root@k8s-master-49 opt]
libseccomp-2.3.1-3.el7.x86_64
[root@k8s-master-49 opt]
[root@k8s-master-49 ~]
[root@k8s-master-49 ~]
[root@k8s-master-49 ~]
libseccomp-2.5.1-1.el8.x86_64
[root@k8s-master-49 ~]
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来限制容器内部进程的系统调用权限。解决方案如下:
更多详细内容请参考:企业级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 Initiati
ve)组织,旨在围绕
容器格式和运行时制定一个开放的工业化标准
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 官方论坛或社区上寻求帮助。