26

I am trying to setup minikube in a VM with ubuntu desktop 20.04 LTS installed, using docker driver.

I've followed the steps here, and also taken into consideration the limitations for the docker driver (reported here), that have to do with runtime security options. And when I try to start minikube the error I get is : Failed to start host: creating host: create: creating: prepare kic ssh: copying pub key.

This is what I have done to have my brand new VM with minikube installed.

  1. Install docker
  2. Add my user to the docker group, otherwise minkube start would fail because dockerd runs as root (aka Rootless mode in docker terminology).
  3. Install kubectl (that is not necessary, but I opted for this instead of the embedded kubectl in minikube)
  4. Install minikube

When I start minikube, this is what I get:

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

I suspect that the error has to do with the security settings issues with the docker driver, but this seems to be like a dog chasing its tail: if I don't use rootless mode in docker and I attempt to start minikube with sudo (so that docker can also start up with a privileged user), then I get this:

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.

So, or either I am missing something or minikube doesn't work at all with docker driver, which I doubt.

Here is my environment info:

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

If someone has minikube working on ubuntu 20.04 and could share versions and driver, I would appreciate. with the info in minikube and docker sites I don't know what else to check to make this work.

underscore_d
  • 6,309
  • 3
  • 38
  • 64
WinterBoot
  • 399
  • 1
  • 5
  • 15
  • 2
    Could you try to run `docker system prune`, `minikube delete` and then `minikube start --driver=docker` again ? – mario Dec 22 '20 at 17:13
  • Thanks @mario... That seems to work; at least I can now overcome the point where it previouly got stuck. The key probably was `docker system prune`, which was the only thing I did not try before several times. For me to learn, could you please elaborate on what garbage has cleaned up that was preventing minkube from starting correctly?... If you post that as an answer I will vote for it because it fixed the initial problem. – WinterBoot Dec 23 '20 at 11:32
  • ok, I posted it as an answer. As it comes to the detailed explanation what exactly prevented your **minikube** instance from starting, I'm affraid it won't be possible as it can be a different thing in every individual case and once it's already cleaned up it's impossible to debug the specific reason any more. But let me update my answer and provide at least a general explanation. – mario Dec 23 '20 at 11:43
  • Inspecting the docker logs I've seen this: `[ERROR] Failed to start minikube scheduled stop.`... But `kubectl get all -A` is displaying everything up&running... I'll dig into it but everything seems to be working. – WinterBoot Dec 23 '20 at 11:46
  • Did you verify the exact date and hour of this entry in docker logs ? I'm just wondering if it's not related with the previous unsuccessful **Minikube** container provisioning. – mario Dec 23 '20 at 11:49
  • yes, it's today @ 11:23 UTC, so 1/2 h ago when I tried your suggestion... weird – WinterBoot Dec 23 '20 at 12:00

13 Answers13

48

Solution:

As I mentioned in my comment you may just need to run:

docker system prune

then:

minikube delete

and finally:

minikube start --driver=docker

This should help.

Explanation:

Although as I already mentioned in my comment, it's difficult to say what was the issue in your specific case, such situation may happen as a consequence of previous unseccessful attempt to run your Minikube instance.

It happens sometimes also when different driver is used and it is run as a VM and basically deleting such VM may help. Usually running minikube delete && minikube start is enough.

In this case, when --driver=docker is used, your Minikube instance is configured as a container in your docker runtime but apart from container itself other things like networking or storage are configured.

docker system prune command removes all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes. So what we can say for sure it was one of the above.

Judging by the exact error message:

❌  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

I guess it could be simply clearing some cached data that helped in your case and removing broken references to non-existing files. The above message explains quite clearly what couldn't be done, namely docker couldn't copy a public ssh key to the destination minikube:/home/docker/.ssh/authorized_keys as the source file /tmp/tmpf-memory-asset544814591, it attempted to copy it from, simply didn't exist. So it's actually very simple to say what happend but to be able to tell why it happened might require diving a bit deeper in both Docker and Minikube internals and analyze step by step how Minikube instance is provisioned when using --driver=docker.

It's a good point that you may try to analyze your docker logs but I seriously doubt that you will find there the exact reason why non-existing temporary file /tmp/tmpf-memory-asset544814591 was referenced or why it didn't exsist.

mario
  • 9,858
  • 1
  • 26
  • 42
  • ... It turns out that I haven't enough reputation :-(... As soon as I reach 15 I'll get back and vote it. – WinterBoot Dec 23 '20 at 11:48
  • 1
    Thank you very much for your elaborating the answer... I have now thanks to your hint my first objects created in the minikube "cluster". – WinterBoot Dec 23 '20 at 13:50
17

minikube start --force --driver=docker fixed it for me

Oana
  • 537
  • 5
  • 11
15

The issue is that the docker driver should not be used with root privileges. And by default, the docker daemon always runs as the root user. To run the docker daemon not as root user, create a Unix group called docker and add users to it. When the Docker daemon starts, it creates a Unix socket accessible by members of the docker group.

Run the following commands to fix this issue

  1. Create the docker group if not exist

sudo groupadd docker

  1. Add user to the docker group

sudo usermod -aG docker [user]

  1. To activate changes to the group

newgrp docker

  1. start minikube cluster

minikube start

  • Not always the right answer. Please, pay attention to step #2 of the original post, with the detailed steps done: that step is, precisely, what you claim will solve the issue, but clearly did not solve mine at that time. I'd stick to Mario's answer below. – WinterBoot Oct 25 '21 at 17:25
5

This worked for me minikube start --driver=docker --container-runtime=containerd

Anant
  • 1,356
  • 1
  • 11
  • 9
3

if you use Linux Desktop OS with docker and minikube already installed, just run

sudo usermod -aG docker $USER

and restart your computer. It worked for me.

Prateek Kapoor
  • 947
  • 9
  • 18
0

I was running into the same issue when I attempted to install Minikube on an Ubuntu 20.04 system.

The "docker system prune" didn't help in my case, but I figured out the cause for my issue was that /var was mounted with the nosuid option and I had to remove that and remount /var. The minikube cluster initialization then worked.

I might be too ignorant but I didn't find that info stated as a requirement.

William Baker Morrison
  • 1,642
  • 4
  • 21
  • 33
0

Restarting my mac helped me.

I was getting below error earlier:

❌  Exiting due to DRV DOCKER NOT RUNNING: Found docker, but the docker service isn't running. Try restarting the docker service.
0

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

sudo systemctl enable docker

systemctl status docker

sudo systemctl start/stop docker

sudo groupadd docker

sudo usermod -aG docker user_name --- to add the user to docker group.

newgrp docker -- to activate the grp

minikube start or minikube start --driver=docker ---to start minikube

Vivek Raj
  • 353
  • 3
  • 3
0

On my Raspberry Pi this problem was resolved with:

sudo usermod -aG docker $USER && newgrp docker
Dharman
  • 30,962
  • 25
  • 85
  • 135
Tridelt
  • 13
  • 6
0

Try the following:

minikube delete

Then try to delete all docker images with name like k8s... and minikube:

docker rmi <container id> <container id2> <container id3>

Finally:

minikube start
Stephen Ostermiller
  • 23,933
  • 14
  • 88
  • 109
0

On my end just a docker system prune did the job (Ubuntu). I had a few configurations I did not want to lose on my minikube profile and it recreated the container accordinlgy and booted fine. So before the minikube profile deletion it is something to try first.

helvete
  • 2,455
  • 13
  • 33
  • 37
0

It's worth checking to see if it's running in Docker desktop on a Mac. If it is then run the kubectl command. If that returns the commands screen then you're good to go.

0

Try the following first:

sudo chmod 666 /var/run/docker.sock

Then finally:

minikube start --driver=docker
helvete
  • 2,455
  • 13
  • 33
  • 37