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

decide how to handle the breakout of the dockershim from the kubelet. #1412

Closed
neolit123 opened this issue Feb 15, 2019 · 18 comments
Closed
Assignees
Labels
area/ecosystem lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. sig/node Categorizes an issue or PR as relevant to SIG Node.

Comments

@neolit123
Copy link
Member

neolit123 commented Feb 15, 2019

this issue tracks the dockershim deprecation / removal with some key events over time.

summary of the kubeadm stance for the dockershim removal:

  • if only docker is present kubeadm will try to use it but a 1.24> kubelet will fail.
    you'd have to build and deploy cri-dockerd on the host that exposes the dockershim CRI socket:
    https://github.com/Mirantis/cri-dockerd
  • if you have feedback about the dockershim removal please comment on Dockershim removal feedback & issues kubernetes#106917
  • if you have multiple container runtime sockets on the host kubeadm will throw an error asking you to pick one
    this is possible with init|joinconfiguration.noderegistration.crisocket
  • if you only have one socket - containerd or crio, kubeadm will autodetect and use the socket
  • docs / migration guides from docker to another container runtime will contain details about kubeadm
  • kubeadm no longer has e2e tests for docker as the CR. in the future we can have tests if cri-dockerd becomes maintained and has docs / releases.

history:

update 19.05.2020:

update 11.11.2020:

update 1.24 / 12.2021:

@neolit123 neolit123 added help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. area/ecosystem priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. sig/node Categorizes an issue or PR as relevant to SIG Node. labels Feb 15, 2019
@rosti
Copy link

rosti commented Feb 15, 2019

I'll move in on this one.

/assign

@timothysc timothysc added this to the v1.15 milestone Feb 19, 2019
@timothysc timothysc removed their assignment May 10, 2019
@timothysc timothysc modified the milestones: v1.15, Next May 10, 2019
@timothysc timothysc added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label May 10, 2019
@timothysc
Copy link
Member

We're blocked on kubelet changes first.

@astrieanna
Copy link

astrieanna commented May 29, 2019

/remove-help

This does not fit the help wanted definition because:

  • It seems to involve community discussion/decisions (e.g. how to distribute the binary).
  • It seems to be taken already (by @rosti).

@k8s-ci-robot k8s-ci-robot removed the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label May 29, 2019
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/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 Aug 27, 2019
@neolit123
Copy link
Member Author

/remove-lifecycle stale
/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Aug 27, 2019
@neolit123 neolit123 changed the title decide how to handle the breakout of the Docker shim from the kubelet. decide how to handle the breakout of the dockershim from the kubelet. Apr 29, 2020
@neolit123 neolit123 modified the milestones: Next, v1.21 Dec 2, 2020
@neolit123 neolit123 removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Dec 2, 2020
@neolit123 neolit123 assigned neolit123 and unassigned rosti Dec 2, 2020
@BenTheElder
Copy link
Member

Should cri-dockerd now be distributed by mirantis etc. downstream just as docker and containerd etc. are handled by their vendor(s) / distros? (given that the kubernetes project is not going to own this binary)

@neolit123
Copy link
Member Author

my vote goes for not releasing cri-dockerd as part of the k8s release packages, though this is up to sig-release to decide.
we should probably stop doing the same for crictl too. the current version is outdated but our packages depend on it:
kubernetes/release#1636
and a wild guess is that if we change this it will break apt/rpm users.

on the kubeadm side, my prior proposal was to stop managing the CR cgroup driver and sandbox image for all CRs. docker was the only one we did that for and now that it becomes external we should stop doing these actions completely.

a few documentation updates will be required for users to prepare these during node setup at:
https://kubernetes.io/docs/setup/production-environment/container-runtimes/

@neolit123 neolit123 removed this from the v1.21 milestone Mar 9, 2021
@neolit123 neolit123 added this to the v1.22 milestone Mar 9, 2021
@xlgao-zju
Copy link

@neolit123 if the docker-shim is remove by kubelet, how will we handle the upgrade of control-plane which is using docker as runtime?

@neolit123
Copy link
Member Author

neolit123 commented Mar 26, 2021 via email

@dims
Copy link
Member

dims commented Mar 26, 2021

please see https://github.com/Mirantis/cri-dockerd

@neolit123 neolit123 modified the milestones: v1.22, v1.23 Jul 5, 2021
@neolit123
Copy link
Member Author

neolit123 commented Nov 23, 2021

status update for 1.23 around the planned dockershim removal in 1.24:

@neolit123
Copy link
Member Author

neolit123 commented Dec 8, 2021

looks like dockershim was removed from the kubelet in k/k master (PR is LGTM/approved)
kubernetes/kubernetes#97252

this means we have to switch our e2e jobs against k/k master to containerd. since our setup is rather complex it would be easier to switch the jobs against all k/k branches to containerd.

to do that we have to modify the base image in all the files here:
https://github.com/kubernetes/kubeadm/blob/ecb3d2206a00b1aab25d754a0c4c95d781ac0909/kinder/ci/tools/update-workflows/templates/workflows/
to be baseImage: kindest/base:v20191105-ee880e9b

and then run ./hack/update-workflows.sh in /kinder.

EDIT: PR for that is here:
#2620

@neolit123
Copy link
Member Author

neolit123 commented Dec 8, 2021

one problem in the kubeadm code base is here:
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/phases/kubelet/flags.go#L80-L86

with our support skew we'd have to not manage this branching for kubelet N (assuming one can set it manually in cri-dockerd or if it's cni by default), while we have to manage it for kubelet N-1.

i think this issue can be closed after that.

in an ideal world the https://github.com/Mirantis/cri-dockerd project should include docs on how to deploy a service (e.g. managed by systemd) for users that never want to move away from docker(shim).also assuming the project will gain maintenance traction.

@neolit123 neolit123 modified the milestones: v1.23, v1.24 Dec 8, 2021
@sftim
Copy link

sftim commented Dec 9, 2021

BTW, is the description of this issue current? (if not, would it be useful to revise it?)

@neolit123
Copy link
Member Author

good point, updated with a summary

@neolit123
Copy link
Member Author

cross linking to the tracking issue for dockershim removal feedback:
kubernetes/kubernetes#106917

@afbjorklund
Copy link

afbjorklund commented Dec 10, 2021

in an ideal world the https://github.com/Mirantis/cri-dockerd project should include docs on how to deploy a service (e.g. managed by systemd) for users that never want to move away from docker(shim).

Currently they refer to https://docs.mirantis.com, which doesn't have any information for cri-dockerd

It only documents the Mirantis Container Runtime (MCR) and Mirantis Kubernetes Engine (MKE) products.

@neolit123
Copy link
Member Author

closing in favor of remain tasks for 1.24 and later TBD here:
#2626

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/ecosystem lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. sig/node Categorizes an issue or PR as relevant to SIG Node.
Projects
None yet
Development

No branches or pull requests