Skip to content
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

Document container runtimes available in minikube #13358

Closed
afbjorklund opened this issue Jan 16, 2022 · 10 comments · Fixed by #13359
Closed

Document container runtimes available in minikube #13358

afbjorklund opened this issue Jan 16, 2022 · 10 comments · Fixed by #13359
Assignees
Labels
kind/documentation Categorizes issue or PR as related to documentation. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.

Comments

@afbjorklund
Copy link
Collaborator

afbjorklund commented Jan 16, 2022

We should add some more detailed documentation, about the available container runtimes.

In alphabetical order:

  • "containerd"

    • server: containerd + buildkitd
    • client: nerdctl (+ ctr + buildctl)
  • "cri-o"

    • server: crio + podman
    • client: podman
  • "docker"

    • server: dockerd
    • client: docker

We need some more information about tools and envionment, than what upstream provides:

https://kubernetes.io/docs/setup/production-environment/container-runtimes/

Some information is available under https://minikube.sigs.k8s.io/docs/handbook/pushing/

Spelling should be the same as what Kubernetes uses, when listing the runtime for a node:

minikube kubectl -- get nodes -o wide

Don't need so much information about crictl, that can be left for upstream to document.

https://kubernetes.io/docs/tasks/debug-application-cluster/crictl/

@afbjorklund afbjorklund added the kind/documentation Categorizes issue or PR as related to documentation. label Jan 16, 2022
@afbjorklund
Copy link
Collaborator Author

afbjorklund commented Jan 16, 2022

@sftim
Copy link

sftim commented Jan 24, 2022

I'm not quite clear on what's meant by the “client” part of the issue description.

Let's say I run Minikube with qemu + kvm VM driver. I don't need to know about docker, nerdctl or podman to do that.

I recommend mentioning some additional context for this issue so it's clear what kind of pages this is relevant to and under what circumstances the user's choice of client becomes relevant.

@afbjorklund
Copy link
Collaborator Author

afbjorklund commented Jan 24, 2022

The "client" refers to the program that runs on host, such as kubectl.

Some things can be performed by node tools like crictl, but not everything.

For instance for loading images from tarball, or building new images.

Then you have to drop down to the real container runtime, or use a wrapper.


Linux users can use the tools locally, but Mac and Win users are not so lucky.

What we are trying to avoid, is the scenario where the user runs two VMs.

And then have to push and pull the images between those separate machines.

Many minikube users are used to manipulating directly, using ssh and docker.

@afbjorklund
Copy link
Collaborator Author

afbjorklund commented Jan 24, 2022

Also, there is even a new feature where people use minikube without Kubernetes.

https://minikube.sigs.k8s.io/docs/faq/#can-i-use-minikube-as-a-docker-desktop-replacement

Previously they could use "Docker Machine", but that project has been deprecated.

It runs the VM provisioner (CR install), but does not run the bootstrapper (now: kubeadm)


Historic context: https://kubernetes.io/blog/2016/09/how-we-made-kubernetes-easy-to-install/

There are three stages in setting up a Kubernetes cluster, and we decided to focus on the second two (to begin with):

Provisioning : getting some machines
Bootstrapping : installing Kubernetes on them and configuring certificates
Add-ons : installing necessary cluster add-ons like DNS and monitoring services, a pod network, etc

And of course also https://kubernetes.io/blog/2016/07/minikube-easily-run-kubernetes-locally/

When the cluster no longer runs a Docker daemon, the client needs to be changed accordingly ?

@afbjorklund
Copy link
Collaborator Author

afbjorklund commented Jan 24, 2022

The preferred driver for minikube even runs the cluster in a container inside a virtual machine:

It is possible that the host no longer runs Docker Desktop, and the cluster no longer runs Docker Engine.

The subscription changes* and interface changes* are only distantly related to this, but accelerates adoption.

@afbjorklund
Copy link
Collaborator Author

afbjorklund commented Jan 24, 2022

Let's say I run Minikube with qemu + kvm VM driver. I don't need to know about docker, nerdctl or podman to do that.

You can run minikube start, and then minikube kubectl and minikube dashboard without learning the "internals".

This was more advanced documentation, for users that want to talk directly to the container runtime (outside of the CRI)
Either because there are things missing in the specification, or because they are doing something outside of Kubernetes ?

But there should not be any need to do it, hopefully minikube image build covers that - until kubectl build is standard.
(the purpose of the "build" command is to convert a Dockerfile/Containerfile into something that can used as an image)

Many things can also be accomplished with crictl only.

@spowelljr spowelljr added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Jan 25, 2022
@afbjorklund afbjorklund added this to the 1.27.0-candidate milestone Feb 24, 2022
@k8s-triage-robot
Copy link

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:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label May 25, 2022
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jun 24, 2022
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue or PR with /reopen
  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

@k8s-ci-robot
Copy link
Contributor

@k8s-triage-robot: Closing this issue.

In response to this:

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue or PR with /reopen
  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/documentation Categorizes issue or PR as related to documentation. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants