minikube: cri-dockerd v0.2.4 does not work out of the box with minikube

What Happened?

https://github.com/Mirantis/cri-dockerd/releases/tag/v0.2.4 now defaults to using the kubenet network plugin (https://github.com/Mirantis/cri-dockerd/pull/99). This does not work, at least with the none driver.

The cri-dockerd README suggests the cni driver as perhaps an alternative, but this doesn’t work either.

Only by checking the old code from cri-dockerd v0.2.3 can one find that it used to run with “no” network plugin (--network-plugin= on the cri-dockerd command line) as a valid arg, and that is what is needed to make it work.

Attach the log file

With the kubenet driver, kubelet reports:

Aug 03 16:04:29 MYHOSTNAME kubelet[3512192]: E0803 16:04:29.502654 3512192 kubelet.go:2349] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: could not locate kubenet required CNI plugins [bridge host-local loopback] at [\"/opt/cni/bin\" \"/opt/cni/bin\"]"

and the node never becomes ready and so no pod is ever scheduled.

With the cni driver:

Aug 03 16:05:15 MYHOSTNAME kubelet[3517922]: E0803 16:05:15.295210 3517922 kubelet.go:2349] "Container runtime network not ready" networkReady="NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized"

Operating System

Ubuntu

Driver

None (Baremetal)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 18

Most upvoted comments

It is fixed by this PR, which always sets the network plugin: (avoids the previous shortcut, to not set it)

This PR is not working for me as-is, but for a reason I was able to identify. Posted details there, but tl;dr it’s just a typo and works after fixing that 👍

It is fixed by this PR, which always sets the network plugin: (avoids the previous shortcut, to not set it)

This was the minikube code that got broken:

	if networkPlugin == "" {
		// no-op plugin
		return nil
	}

Now that default changed to “kubenet” 😔

Note that both dockershim and kubenet were removed from upstream, while recommending to use CRI and CNI.