January 25, 2020

 

Impact of docker support deprecation in Kubernetes

Kubernetes is deprecating docker container runtime support post v1.20. What does this mean and how does it affect current users ?


Docker is the most popular container runtime, but there are other container runtimes that kubernetes also supports such as CRI-O and containerd. Although docker runtime support will be deprecated after v1.20, images that are created using docker will still run in your kubernetes clusters. So there is no need to panic. Currently docker runtime support is scheduled to to be removed in late 2021. While there is still time it is advised to change cluster configurations to container runtimes like CRI-O or containerd.


Why the change?

A container runtime’s responsibility is to pull the images and run them. kubelet, which is one of the essential component of kubernetes that aids in running containers ( in a pod ) also houses a module called “dockershim” to interact with the docker container runtime. The other features of docker engine besides docker container runtime are basically unneeded and requires additional maintenance by the kubernetes community. In addition, docker is not compliant with CRI ( container runtime interface ) that basically enables the kubelet to use a wide variety of contianer runtimes without having the need to recompile.


TL;DR So if you are using docker in your development environments, it should not affect the way you are building your docker images. The images that are built using docker are OCI compliant and since kubernetes is independent of container image building technology it should still be able to run any image built by docker. However if you are using managed kubernetes services like GKE, AKS or EKS you will need to ensure your worker nodes support a container runtime other than docker ( such as CRI-O or containerd ) and if you running your own kubernetes clusters you will also need to make the necessary changes to avoid downtime. However there are also other options such as installing dockershim as a standalone open source component if you still plan to use docker runtime inspite of the deprecation.