如何解决minikube 不能在 ubuntu 20.04 LTS 上启动由于 GUEST_PROVISION 退出 解决方案:说明:
我正在尝试使用 docker 驱动程序在安装了 ubuntu 桌面 20.04 LTS 的 VM 中设置 minikube。
我已按照步骤 here 进行操作,并且还考虑了 docker 驱动程序的限制(报告为 here),这与运行时安全选项有关。当我尝试启动 minikube 时,我得到的错误是:无法启动主机:创建主机:创建:创建:准备 kic ssh:复制公钥。
这就是我为安装 minikube 的全新 VM 所做的。
- 安装docker
- 将我的用户添加到 docker 组,否则 minkube start 将失败,因为 dockerd 以 root 身份运行(即 docker 术语中的 Rootless 模式)。
- 安装 kubectl(这不是必需的,但我选择了这个而不是 minikube 中的嵌入式 kubectl)
- 安装 minikube
当我启动 minikube 时,这就是我得到的:
ubuntuDesktop:~$ minikube start
? minikube v1.16.0 on Ubuntu 20.04
✨ Using the docker driver based on user configuration
? Starting control plane node minikube in cluster minikube
? Creating docker container (CPUs=2,Memory=4500MB) ...
✋ Stopping node "minikube" ...
? Powering off "minikube" via SSH ...
? Deleting "minikube" in docker ...
? StartHost failed,but will try again: creating host: create: creating: prepare kic ssh: copying pub key: docker copy /tmp/tmpf-memory-asset051825440 into minikube:/home/docker/.ssh/authorized_keys,output: lstat /tmp/tmpf-memory-asset051825440: no such file or directory
: exit status 1
? Creating docker container (CPUs=2,Memory=4500MB) ...
? Failed to start docker container. Running "minikube delete" may fix it: creating host: create: creating: prepare kic ssh: copying pub key: docker copy /tmp/tmpf-memory-asset544814591 into minikube:/home/docker/.ssh/authorized_keys,output: lstat /tmp/tmpf-memory-asset544814591: no such file or directory
: exit status 1
❌ Exiting due to GUEST_PROVISION: Failed to start host: creating host: create: creating: prepare kic ssh: copying pub key: docker copy /tmp/tmpf-memory-asset544814591 into minikube:/home/docker/.ssh/authorized_keys,output: lstat /tmp/tmpf-memory-asset544814591: no such file or directory
: exit status 1
? If the above advice does not help,please let us know:
? https://github.com/kubernetes/minikube/issues/new/choose
我怀疑该错误与 docker 驱动程序的安全设置问题有关,但这似乎就像一条狗在追尾巴:如果我不在 docker 中使用无根模式,并且尝试使用以下命令启动 minikube sudo(这样docker也可以用特权用户启动),然后我得到这个:
ubuntuDesktop:~$ sudo minikube start
[sudo] password for alberto:
? minikube v1.16.0 on Ubuntu 20.04
✨ Automatically selected the docker driver. Other choices: virtualbox,none
? The "docker" driver should not be used with root privileges.
? If you are running minikube within a VM,consider using --driver=none:
? https://minikube.sigs.k8s.io/docs/reference/drivers/none/
❌ Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.
所以,或者我遗漏了什么,或者 minikube 根本无法与 docker 驱动程序一起使用,我对此表示怀疑。
这是我的环境信息:
ubuntuDesktop:~$ docker version
Client:
Version: 19.03.11
API version: 1.40
Go version: go1.13.12
Git commit: dd360c7
Built: Mon Jun 8 20:23:26 2020
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 19.03.11
API version: 1.40 (minimum version 1.12)
Go version: go1.13.12
Git commit: 77e06fd
Built: Mon Jun 8 20:24:59 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit:
docker-init:
Version: 0.18.0
GitCommit: fec3683
ubuntuDesktop:~$ minikube version
minikube version: v1.16.0
commit: 9f1e482427589ff8451c4723b6ba53bb9742fbb1-dirty
如果有人在 ubuntu 20.04 上使用 minikube 并且可以共享版本和驱动程序,我将不胜感激。使用 minikube 和 docker 站点中的信息,我不知道还需要检查什么才能使其正常工作。
解决方法
解决方案:
正如我在评论中提到的,您可能只需要运行:
docker system prune
然后:
minikube delete
最后:
minikube start --driver=docker
这应该会有所帮助。
说明:
尽管正如我在评论中已经提到的,很难说在您的具体情况下是什么问题,但这种情况可能是由于之前尝试运行您的 Minikube 实例的失败而导致的。
当使用不同的驱动程序并且它作为 VM 运行时,有时也会发生这种情况,基本上删除这样的 VM 可能会有所帮助。通常运行 minikube delete && minikube start
就足够了。
在这种情况下,当使用 --driver=docker
时,您的 Minikube 实例被配置为您的 docker 运行时 中的容器,但除了容器本身之外,还有其他类似的东西已配置网络或存储。
docker system prune
命令删除所有未使用的容器、网络、图像(悬空的和未引用的)以及可选的卷。所以我们可以肯定地说它是上述之一。
从确切的错误信息来看:
❌ Exiting due to GUEST_PROVISION: Failed to start host: creating host: create: creating: prepare kic ssh: copying pub key: docker copy /tmp/tmpf-memory-asset544814591 into minikube:/home/docker/.ssh/authorized_keys,output: lstat /tmp/tmpf-memory-asset544814591: no such file or directory
: exit status 1
我想这可能只是清除一些对您有帮助的 cached
数据并删除对不存在文件的损坏引用。上面的消息很清楚地说明了什么不能做,即docker不能copy
一个public ssh key
到目的地minikube:/home/docker/.ssh/authorized_keys
作为源文件{{ 1}},它试图从中复制它,根本不存在。所以说发生了什么实际上很简单,但是要能够告诉为什么它发生可能需要深入了解Docker和Minikube 内部结构,并逐步分析如何在使用 /tmp/tmpf-memory-asset544814591
时配置 Minikube 实例。
您可以尝试分析您的 docker 日志是个好主意,但我严重怀疑您是否会在那里找到引用不存在的临时文件 --driver=docker
的确切原因或原因它不存在。
问题是 docker
驱动程序不应与 root 权限一起使用。默认情况下,docker 守护进程始终以 root 用户身份运行。要不以 root 用户身份运行 docker 守护进程,请创建一个名为 docker 的 Unix 组并向其中添加用户。当 Docker 守护进程启动时,它会创建一个可供 docker 组成员访问的 Unix 套接字。
运行以下命令来解决这个问题
- 如果不存在则创建 docker 组
sudo groupadd docker
- 将用户添加到 docker 组
sudo usermod -aG docker [用户]
- 激活对组的更改
newgrp 码头工人
- 启动 minikube 集群
minikube 启动
,minikube start --force --driver=docker
帮我修好了
如果你使用已经安装了 docker 和 minikube 的 Linux 桌面操作系统,只需运行
recording = new Blob(chunks,{ 'type' : mediaRecorder.mimeType });
并重新启动计算机。 它对我有用。
,当我尝试在 Minikube
上安装 Ubuntu 20.04 system
时遇到了同样的问题。
“docker system prune”对我的情况没有帮助,但我发现问题的原因是 /var
与 nosuid
选项一起安装,我不得不删除它,重新安装 /var
。 minikube 集群初始化然后工作。
我可能太无知了,但我没有发现该信息被列为要求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。