December 04, 2020
Kubernetes is deprecating Docker support and how should you prepare for it?
As of December 02, 2020 Kubernetes has announced that going forward Kubernetes is going to deprecate Docker as their preferred container runtime environment.
In the DevOps community Docker is considered as a backbone when it comes to virtualization and since the inception of Kubernetes in the DevOps community Docker has been the preferred choice by the developer community. So Docker being adopted widely by the developer(real human being) as well as Kubernetes(not a real human being).
1. Why kubernetes deprecating the Docker?
As we know Kubernetes runs a container inside the kubernetes cluster but to interact with container
kubelet has to use
dockershim which internally communicate with
docker and then
containerd and finally
Kubernetes flow with Docker
Here you can see
Kubernetes has to deal with
docker first before it can actually access
Kubernetes flow after deprecating Docker
docker Kubernetes need not worry about
docker, it can directly interact with
cri-containerd. But we need to build container images which support CRI-OOpen container Initiative or Containerd
You can see the difference in the flow when Kubernetes is using
Docker, it has to maintain overhead of
dockershim which is entirely built for supporting UX aspects of the docker and it is really useful for the developers(real human being), not Kubernetes.
2. What about GKE, EKS, AKS ?
Should you need to be worried if you are on GKE, EKS, AKS?
The Answer is - YES
How to safeguard?
To safeguard from Docker deprecation you need to make sure that
kubernetes nodes are using the supported container(CRI-OOpen container Initiative or Containerd) runtime otherwise it will be troublesome in the later stages.
Other than that if you have node customizations then you need to work with your cloud service provider to update the environment as well as runtime.
3. What is being planned in Kubernetes Upcoming release?
v1.20.0 - Once you upgarde to v1.20.0 then you will get deprecation warning.
v1.22.0 - The Docker runtime support(dockershim) will be completely removed and you will have to choose from CRI-OOpen container Initiative or Containerd
4. Would this deprecation break other functionalities?
This is a little diabolical because you need to be watchful for -
- Supporting scripts - All the scripts which are heavily relying on Docker will break, so you need to take care of the scripting.
- kube-imagepuller - If you are using the kube-imagepuller then this update would be a nightmare for you because it is gonna break a lot, so be mindful about it. It is highly recommended to get rid of it before its too late.
- Plugins - Any Kubernetes plugin which requires
docker CLIwill not work anymore
- docker CLI - Any scripts which are using
docker CLIdirectly or indirectly will not work.
- Node provisioning - Any Node provisioning scripts which uses docker or docker socket will not work
5. What container tool should I use going forward?
Going forward it advisable to use following container tools -
Posts in this Series
- Kubernetes Cheat Sheet for day to day DevOps operations?
- Delete Kubernetes POD stuck in terminating state?
- How to Delete PV(Persistent Volume) and PVC(Persistent Volume Claim) stuck in terminating state?
- Share kubernetes secrets between namespaces?
- How to use Kubernetes secrets?
- How to delete all kubernetes PODS?
- kubernetes pods getting recreated?
- Implementing Kubernetes liveness, Readiness and Startup probes with Spring Boot Microservice Application?
- kubectl export yaml OR How to generate YAML for deployed kubernetes resources
- Kubernetes Updates
- CI/CD Kubernetes | Setting up CI/CD Jenkins pipeline for kubernetes
- Kubernetes cluster setup with Jenkins
- How to use Persistent Volume and Persistent Claims | Kubernetes
- How to fix ProvisioningFailed persistentvolume controller no volume plugin matched
- Fixing – Cannot bind to requested volume: storageClasseName does not match
- Fixing – pod has unbound immediate persistentvolumeclaims or cannot bind to requested volume incompatible accessmode
- How to fix kubernetes dashboard forbidden 403 error – message services https kubernetes-dashboard is forbidden User
- How to fix Kubernetes – error execution phase preflight [preflight]
- Deploy Spring Boot microservices on kubernetes?
- How to fix – ansible_memtotal_mb minimal_master_memory_mb
- How to use kubespray – 12 Steps for Installing a Production Ready Kubernetes Cluster
- How to setup kubernetes on CentOS 8 and CentOS 7
- How to fix – How to fix - ERROR Swap running with swap on is not supported. Please disable swap
- 14 Steps to Install kubernetes on Ubuntu 20.04(bento/ubuntu-20.04), 18.04(hashicorp/bionic64)
- Kubernetes Dashboard | Kubernetes Admin GUI | Kubernetes Desktop Client
- Install Kubernetes with Minikube