-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cri-dockerd v0.2.4 does not work out of the box with minikube #14724
Comments
This seems like a breaking change from upstream... No idea why cni would stop working too, though. Fortunately it doesn't affect the regular minikube deployment (0.2.2), until we update cri-dockerd next time... There was another bug in 0.2.3, that cause the log to fill up with debugging output (as "error") - bug 85 |
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" 😔 |
@mgabeler-lee-6rs the errors (with "cni") seems weird, it is like CNI plugins were not properly installed ?
If not using the "no-op" (previous default network plugin), then both When installing kubernetes from packages, these are installed as requirements (of the kubelet, and kubeadm) Installing and configuring cri and cni are now the reponsibility of the runtime, since Kubernetes v1.24.0-alpha.2 |
Note that both dockershim and kubenet were removed from upstream, while recommending to use CRI and CNI. |
Where is this documented?
And actually, the "no-op" plugin does not seem to need the cni-plugins, it is the kubenet and cni plugin that need it?
But that isn't what happens here, unless I'm misunderstanding what you mean by "packages". Minikube is the one installing kubelet & kubeadm when using the none driver, looks like from binaries from its own release process. Minikube's on packages don't have any dependencies on these other tools, not least because only cri-dockerd even has .deb/.rpm packages available, crictl and the cni plugins do not. Seems like the changes from #14555 should be extended to also check for the CNI plugins if they are required? Though with the PR you linked it seems like they may no longer be required? Thanks for the link to this PR. I will try building from this branch and confirm if that fixes this issue for me or not! I'm well aware the none driver is "advanced mode" and has extra requirements and caveats. I'd move away from it if the alternatives weren't horrifically worse for my team's use case ;) It just seems the documentation on how to use it has degraded significantly with kubernetes 1.24 (in the sense that the documentation hasn't been fully updated to make it easy to setup as it was with 1.23). Granted, the lacking documentation is not just down to minikube, but also other kubernetes and peripheral projects too. |
The documentation hasn't really been updated (properly) for 1.24, the requirements have changed since 1.23
|
The documentation was actually deleted from Kubernetes, since it has been delegated to the container runtime providers. So now it is up to Docker and Mirantis to provide this information, but they mostly do that for their paying customers. |
It was a vague reference to the upstream documentation of installing kubernetes with apt or yum: Like you say, that is not what is happening with the "none" driver - it "assumes" that they are there. * the "normal" behaviour is for Kubernetes to into CrashLoopBackoff, waiting for the installation...
This is because CNI is a separate CNCF project (from Kubernetes), and lives at https://www.cni.dev/ After installing the required /opt/cni programs, it is also required to configure it using the networking plugins. |
Correct. This is why this was a breaking change, it seemed to work OK with the cri-dockerd 0.22 release for instance |
Sorry but no, it does assume they (kubectl and kubeadm) are present. Minikube itself downloads its own copies of them and installs them into |
I meant that minikube assumes that cri and cni are installed by the user, it does add the k8s components For the supported OS, minikube pre-installs the cri and cni packages on the ISO and in the KIC image |
This needs some more documentation on the "none" page, beyond just some crictl and cni bullets. Can perhaps link to the "without a package manager" section, of the upstream k8s.io documentation ? Even though it is quite horrible. (for instance, the versions don't even match those used elsewhere) BTW: This page also has the link to the available .deb and .rpm packages, in those other "tabs"... |
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 👍 |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale The PRs are still going, this is still an issue |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
Minikube being broken due to this and linked issues for months on end has simply led to me & my team abandoning use of minikube. It's probably still broken, but I won't be able to help confirm any fixes. That said, the PRs are still out there 🤷 |
What Happened?
https://github.com/Mirantis/cri-dockerd/releases/tag/v0.2.4 now defaults to using the
kubenet
network plugin (Mirantis/cri-dockerd#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:and the node never becomes ready and so no pod is ever scheduled.
With the
cni
driver:Operating System
Ubuntu
Driver
None (Baremetal)
The text was updated successfully, but these errors were encountered: