Explore your cluster

Thanks to Docker Desktop, we already have a cluster set up for us. Under the hood, a few things happened:

  • certificates and cluster configuration were confingured
  • internal components of Kubernetes were installed
  • controllers for networking and storage were added
  • cluster got booted up

If you open the Docker desktop application and select Images in the sidebar, you will see several images set up automatically and ready for use:

Core Kubernetes components:

  • registry.k8s.io/pause (container used to create a network namespace for each Pod)
  • registry.k8s.io/etcd (key value store for all cluster data)
  • registry.k8s.io/coredns/coredns (DNS server)
  • registry.k8s.io/kube-proxy (network proxy on each Node in a cluster)
  • registry.k8s.io/kube-controller-manager (daemon that embeds the core control logic)
  • registry.k8s.io/kube-scheduler (assigning Pods to Nodes)
  • registry.k8s.io/kube-apiserver (exposes Kubernetes API)

Additional controllers:

  • docker/desktop-vpnkit-controller (port forwarding service)
  • docker/desktop-storage-provisioner (helps persist the local storage data)

More details about how Kubernetes works with Docker Desktop can be found in this blog post.

Cluster details

Let check out some details about your cluster in our terminal and run

kubectl cluster-info

The Kubernetes control plane manages Worker Nodes and Pods in our cluster and runs by default on Port 6443.

CoreDNS is a DNS server built for Kubernetes and is hence its default DNS server, helping Pods and Services find and communicate with each other.

But what about all the images we can see in Docker Desktop? Run

kubectl get pods -n kube-system

and you will find them running. With this command we were asking for all system pods - kube-system is the namespace for objects created automatically by the Kubernetes system.

Last but not least, let’s see the nodes of our cluster:

kubectl get nodes

You will find one Node (which is actually also our control plane) running with a status of Ready - meaning ready to accept applications for deployment.