调用 kubectl exec 时出现“无法创建 runc 控制台套接字”

调用 kubectl exec 时出现“无法创建 runc 控制台套接字”

我在地下室运行着一个 Ubuntu 服务器MicroK8S,通过 Snap 安装。我试图创建一个简单的 pod,kubectl run以便可以执行调试。但我一直失败。

起初,我尝试了这个命令:

kubectl run -it --rm --restart=Never busybox --image=busybox -- /bin/ash

但每次我尝试运行它时,都会出现此错误:

pod "busybox deleted"
pod default/busybox terminated (ContainerCannotRun)
failed to create OCI runtime control socket: stat /run/user/0/snap.microk8s: no such file or directory: unknown

然后我决定尝试先运行容器,然后执行第二个容器,作为两个单独的命令。令人惊讶的是,最初的 pod 创建实际上有效,就像这个命令一样:

kubectl run --image=busybox --restart=Never busybox --image=busybox --command -- tail -f /dev/null

但是当我尝试使用此命令执行它时......

kubectl exec -it busybox -- /bin/ash

...我最终遇到了这个错误:

failed to create runc console socket: stat /run/user/0/snap.microk8s: no such file or directory: unknown
command terminated with exit code 126

这两个错误只有在我尝试连接到正在运行的 pod 时才会发生,并且这两个错误都引用了/run/user/0/snap.microk8s。不过,我不太清楚这些错误是什么意思。这是我的配置问题吗?还是我缺少一些依赖项?还是硬盘损坏了?或者是其他原因?最后:我该如何让它正常工作?

答案1

您没有提供您正在使用哪个版本的 microk8s。

由于您使用的是 kubectl 而不是 microk8s.kubectl,我假设您已经创建了别名。我尝试了 microk8s 的 4 个最新版本:1.11、1.12、1.13 和 1.14。似乎此问题仅出现在 1.11 版本中。要检查您当前使用的版本,请执行

snap info microk8s

删除旧的 microk8s 版本

sudo snap remove microk8s

并安装最新版本的 microk8s

sudo snap install microk8s --classic --channel=1.14/stable

作为附加信息,如果您需要长时间处于运行状态的 pod,则可以使用 nginx 映像而不是 busybox。

microk8s.kubectl exec -ti nginx -- /bin/bash

如果你是 microk8s 的新手,那么这将非常有帮助文档

答案2

尝试清除旧容器和图像 - 这似乎是由于空间不足导致的 docker(而不是 kubernetes)问题。一些 docker修剪可以修复它。

相关内容