As far as I understand Kubernetes kubelet talks to CRI (Container Runtime Interface) to run containers. So every Container runtime which is being used in Kubernetes should follow CRI implementation (https://www.ianlewis.org/en/container-runtimes-part-4-kubernetes-container-run). Docker Desktop version neither runs dockerd or containerd. It runs HyperKit for High-Level virtualization. Is it CRI compliant and could be used with Kubernetes?
1 Answers
Hyperkit is not CRI, it is hypervisor such as VirtualBox, which is used for Docker Desktop for Mac
. From Official docker documentation
Docker Desktop for Mac uses HyperKit instead of Virtual Box. Hyperkit is a lightweight macOS virtualization solution built on top of Hypervisor.framework in macOS 10.10 Yosemite and higher.
If you check this blog, it explains very well relationships between hypervisors and CRI.
As you can see the above image, Docker Container Engine (or containerd) is in top of Linux kernel, so it has nothing to do with Hypervisors. This is basically the main difference between VMs and Containers. If you have Linux kernel, you can run your CRI there.
So, Docker Desktop with Hyperkit, will work with Kubernetes
Hope it helps!

- 2,577
- 12
- 21
-
Yes.. got it. :) – sn.anurag Jun 06 '19 at 00:58
-
So, as I understand this post, Docker Engine is running inside embedded linux (inside Hyperkit). On Mac only docker client binary and `/var/run/docker.sock` is exposed. `contianerd` and `containerd.sock` must be on Hyperkit embedded linux. Kubernetes installation on mac will figure out that CRI is docker from docker.sock and use docker client binary will execute all operations. Is my understanding correct? – sn.anurag Jun 06 '19 at 01:36
-
Partially yes, but Docker engine is not running inside embedded linux of Hyperkit, it is running in operating system of VM which created by Hyperkit(Hypervisor). If answer was useful, please accept it – clxoid Jun 06 '19 at 09:19