我在地下室运行着一个 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修剪可以修复它。