Skip to the content.
Kubernetes with Docker Desktop
What is it?
- Docker Desktop for Mac includes a standalone Kubernetes server that runs on your Mac.
Enabling Kubernetes
Access Preferences: Go to the Preferences/Settings menu in Docker Desktop.
Enable Kubernetes: There’s an option to enable Kubernetes, which will install the Kubernetes components necessary to run a single-node cluster locally.
Configure (Optional): You can customize the Kubernetes version and other settings if needed.
Apply & Restart: Click the “Apply & Restart” button, and Docker Desktop will set up a local Kubernetes cluster for you.
How It Works Under the Hood
Kubernetes Inside Docker: Docker Desktop runs the Kubernetes control plane and worker components inside Docker containers.
Shared Resources: It shares system resources with Docker, so you don’t need a separate VM for Kubernetes.
Integration with Docker CLI: It integrates with your Docker CLI, allowing you to use kubectl commands just as you would with a remote cluster.
Local Registry: Supports a local registry, allowing for easier image sharing and testing.
Networking: It sets up networking so that you can communicate with your cluster using localhost.
Mac HyperKit Hypervisor
Hypervisor.framework:
- Docker Desktop uses macOS’s Hypervisor.framework (through HyperKit) to run a lightweight Linux VM
- This is where your Docker containers (and Kubernetes) are actually running
- It is a lightweight, native macOS hypervisor based on xhyve. It’s bundled with Docker Desktop
Port Forwarding: Docker Desktop handles port forwarding from the VM to your macOS system. When a service in a container inside the VM listens on a port, Docker Desktop forwards traffic from that port on localhost to the corresponding port on the VM.
Kubernetes Services: When you expose a Kubernetes service on a particular port, it’s accessible at that port on localhost in your Mac’s browser or other networking tools.