Single Node Kubernetes with Docker Desktop
You can run Single-node Linux Kubernetes clusters with full Linux command line support using Docker Desktop and Windows WSL2. Docker Desktop makes this simple.
This is probably obvious to everyone. I wrote this to capture the commands to use as a future reference.
Originally Created 2021/10
There is another article that discusses
- Creating a multi-node Kubernetes Cluster on a single machine using Kind http://joe.blog.freemansoft.com/2020/07/multi-node-kubernetes-with-kind-and.html
Windows 10 / 11 - WSL2 - Docker
The simplest way to run Kubernetes Windows 10 is with the Docker Desktop and WSL2 integration. Docker will prompt to enable WSL2 integration during installation if you are running a late enough version of Windows 10 or any Windows 11.
Prerequisites
Docker is installed with WSL2 integration enabled. The docker command operates correctly when you type a docker command in a WSL linux command prompt.
Install, Enable and Verify
Install Docker | |
Enable Kubernetes
|
|
The Docker Desktop status bar will change to |
|
View the K8s Cluster status using kubectl cluster-info. You should see the master and DNS are running $ kubectl cluster-info Kubernetes master is running at https://kubernetes.docker.internal:6443 KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy |
|
Kubernetes desktop acts as a single-node Kubernetes cluster. You can see this with with the kubectl get-nodes command $ kubectl get nodes NAME STATUS ROLES AGE VERSION docker-desktop Ready control-plane,master 3d4h v1.22.4 |
|
See all services via kubectl get all or kubectl get services * kubectl get all NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d4h |
|
See all services in all namespaces including K8s ones with kubectl get all --all-namespaces $ kubectl get all --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE docker pod/compose-78f95d4f8c-d2kqn 1/1 Running 0 3d4h docker pod/compose-api-6ffb89dc58-b88bz 1/1 Running 0 3d4h kube-system pod/coredns-5644d7b6d9-6nm4t 1/1 Running 0 3d4h kube-system pod/coredns-5644d7b6d9-wzmmf 1/1 Running 0 3d4h kube-system pod/etcd-docker-desktop 1/1 Running 0 3d4h kube-system pod/kube-apiserver-docker-desktop 1/1 Running 0 3d4h kube-system pod/kube-controller-manager-docker-desktop 1/1 Running 0 3d4h kube-system pod/kube-proxy-cz7pw 1/1 Running 0 3d4h kube-system pod/kube-scheduler-docker-desktop 1/1 Running 0 3d4h kube-system pod/storage-provisioner 1/1 Running 1 3d4h kube-system pod/vpnkit-controller 1/1 Running 0 3d4h NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d4h docker service/compose-api ClusterIP 10.108.194.113 <none> 443/TCP 3d4h kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 3d4h NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE kube-system daemonset.apps/kube-proxy 1 1 1 1 1 beta.kubernetes.io/os=linux 3d4h NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE docker deployment.apps/compose 1/1 1 1 3d4h docker deployment.apps/compose-api 1/1 1 1 3d4h kube-system deployment.apps/coredns 2/2 2 2 3d4h NAMESPACE NAME DESIRED CURRENT READY AGE docker replicaset.apps/compose-78f95d4f8c 1 1 1 3d4h docker replicaset.apps/compose-api-6ffb89dc58 1 1 1 3d4h kube-system replicaset.apps/coredns-5644d7b6d9 2 2 2 3d4h | |
Kubernetes for Docker Desktop automatically raises the API server, Kubernetes master. https://kubernetes.docker.internal:6443/ I don't know how this differers from 127.0.0.1You should get a 403 forbidden if you GET from that endpoint. |
|
Make the API server visible to the network by starting the kubectl proxy joe@z820:~$ kubectl proxy Starting to serve on 127.0.0.1:8001 { "paths": [ "/api", "/api/v1", "/apis", "/apis/", "/apis/admissionregistration.k8s.io", "/apis/admissionregistration.k8s.io/v1", "/apis/admissionregistration.k8s.io/v1beta1", "/apis/apiextensions.k8s.io", "/apis/apiextensions.k8s.io/v1", "/apis/apiextensions.k8s.io/v1beta1", "/apis/apiregistration.k8s.io", "/apis/apiregistration.k8s.io/v1", "/apis/apiregistration.k8s.io/v1beta1", "/apis/apps", "/apis/apps/v1", ... |
Troubleshooting
Kubernetes won't start after Windows 11 upgrade.
- I was unable to create and start my K8S after upgrading to Windows 11. Kubernetes never started. The only way I could fix it was
- Uninstall Docker Desktop
- Restart
- Install Docker Desktop
- Enable Kubernetes
- Kubectl cluster-info returned nothing after K8s was enabled.
- I had to close and re-open my terminal window. It had been opened prior to enabling K8S
Comments
Post a Comment