Kubernetes is a production-grade, open-source platform that orchestrates the placement (scheduling) and execution of application containers within and across computer clusters.
In this post, I will demonstrate some options that we can use to self-provision a single-node k8s cluster, for exam practice or testing purposes, check it out!
Option 1: minikube
I used Macbook Air M2 (macOS Monterey), and going to use brew
to install minikube
.
Step 1: Installation
brew install minikube
Step 2: Start
minikube start
It will take a few minutes for package downloading and cluster provisioning. If you see this message
"Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default"
, you’re good to go!
Step 3: Verification
trungtran@Trungs-MacBook-Air Downloads % kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:56904
CoreDNS is running at https://127.0.0.1:56904/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
trungtran@Trungs-MacBook-Air Downloads % kubectl run nginx --image=nginx:alpine
pod/nginx created
trungtran@Trungs-MacBook-Air Downloads % kubectl get po
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 13s
You can also SSH to cluster node by using this command
trungtran@Trungs-MacBook-Air Downloads % minikube ssh
docker@minikube:~$ sudo ls /etc/kubernetes/manifests/
etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
Reference: minikube start | minikube
Option 2: Docker for Desktop Kubernetes
With Docker for Desktop, it much more easier to provision a Kubernetes cluster as it part of Docker for Desktop, we just needed to enable it.
Step 1: Installation
Install Docker for Desktop: Install Docker Desktop on Mac | Docker Docs
Step 2: Start
Enable Kubernetes cluster: Deploy on Kubernetes with Docker Desktop | Docker Docs
- From the Docker Dashboard, select the Setting icon, or Preferences icon if you use a macOS.
- Select Kubernetes from the left sidebar.
- Next to Enable Kubernetes , select the checkbox.
- Select Apply & Restart to save the settings and then click Install to confirm.
Step 3: Verification
trungtran@Trungs-MacBook-Air ~ % kubectl cluster-info
Kubernetes control plane is running at https://kubernetes.docker.internal:6443
CoreDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-95db45d46-54v7m 1/1 Running 3 (2d16h ago) 32d
coredns-95db45d46-wjvht 1/1 Running 3 (2d16h ago) 32d
etcd-docker-desktop 1/1 Running 3 (2d16h ago) 32d
kube-apiserver-docker-desktop 1/1 Running 3 (2d16h ago) 32d
kube-controller-manager-docker-desktop 1/1 Running 3 (2d16h ago) 32d
kube-proxy-jqp7j 1/1 Running 3 (2d16h ago) 32d
kube-scheduler-docker-desktop 1/1 Running 3 (2d16h ago) 32d
storage-provisioner 1/1 Running 3 (2d16h ago) 32d
vpnkit-controller 1/1 Running 1360 (5m14s ago) 32d
Notes: if you have more than 1 cluster on local env (minikube and Docker for Desktop), you can switch the context by accessing the below menu:
Option 3: Kind
This option is quite complex compared to minikube
and Docker for Desktop
, please visit the official guidelines from Kind for detailed information!
https://kind.sigs.k8s.io/docs/user/quick-start/#installing-with-a-package-manager
Happy learning,
Trung.