Kubernetes Without the Drama - MicroK8s in Action
- Anurag Doshi
- Sep 22
- 4 min read

Let’s be honest: setting up Kubernetes locally can be frustrating.
Maybe you’re using Docker Desktop’s “Kubernetes” because it’s easy to set up… but it's such a resource hog that your laptop starts heating up just from a basic NGINX deployment.
Or you’ve tried Minikube because it’s easy to get started, but sometimes its extra VM layer makes networking tricky - especially on Mac or Windows. It works well if you spend time configuring it right but getting it to behave like production isn’t always straightforward.
Maybe you gave k3s a shot for its speed and light footprint — only to realize its networking and storage defaults don’t line up with your production setup. Or you went full kubeadm for a proper cluster experience, but now your MacBook spends more time overheating than running pods.
All of these approaches have one thing in common: running them locally is tricky, resource-heavy, and rarely mirrors the smooth experience you’ll want in development and production.
MicroK8s: The Kubernetes That Actually Likes You
MicroK8s isn’t just lightweight Kubernetes. It’s real, upstream Kubernetes, CNCF-certified, running in production clusters worldwide — optimized for developers who want consistency without chaos.
Why it stands out:
One-command install — get a cluster up and running in seconds.
Real Kubernetes API — no stripped-down versions.
Reasonable resource usage — your laptop won’t break a sweat.
Environment parity — dev → CI → staging → prod, same cluster every time.
Addons that just work — ingress, registry, observability, all with a single command.
Zero fuss — focus on building, not struggling with YAML.
Let's Get Our Hands Dirty: MicroK8s Speed Run
Enough talk. Let’s get a MicroK8s cluster running on your Mac - quick and easy, no fuss.
Here’s all it takes:
Install and Set Up MicroK8s with Multipass
1. Install Multipass (lightweight VM manager):
brew install --cask multipass
Think of Multipass as lightweight Ubuntu VMs - containers for full operating systems.
2. Launch an Ubuntu VM (allocate enough resources for Kubernetes):
multipass launch --name microk8s-vm --memory 4G --disk 40G --cpus 2
Kubernetes needs room to breathe. Less than 4G RAM will cause issues.
3. Enter the VM shell: multipass shell microk8s-vm
4. Install MicroK8s and fix networking:
sudo snap install microk8s --classic --channel=1.33/stable
sudo iptables -P FORWARD ACCEPT
The iptables command ensures traffic can flow between the VM and host.
5. Give your user access (so you can run commands without sudo):
sudo usermod -a -G microk8s $USERnewgrp microk8s
6. Bring the cluster to life: microk8s status --wait-ready
If it shows healthy - congratulations! You now have a fully functional Kubernetes cluster running locally on macOS.
Opening the Gates: Enabling Ingress
Without ingress, your apps are trapped inside the cluster. MicroK8s makes it easy:
microk8s enable ingress
This deploys nginx-ingress - the same controller you're probably using in production. Verify it’s ready:
microk8s kubectl get pods -n ingress
Bridge the Gap: MacOS Talks to MicroK8s
With your cluster alive, it’s time to give kubectl on macOS the keys to talk to MicroK8s inside Multipass.
1. Copy kubeconfig from the VM:
mkdir ~/.microk8s multipass exec microk8s-vm -- sudo microk8s config > ~/.microk8s/config
2. Point kubectl to it:
export KUBECONFIG=$HOME/.microk8s/config
3. Test the connectivity. Ensure you have kubectl installed on your mac.
kubectl get nodes
If you see your node listed, congrats — your macOS host and MicroK8s cluster are now talking.
Hello Kubernetes: Deploying Your First App
Time for the fun part - getting an app online. MicroK8s includes Helm3 out of the box, so deploying NGINX with an ingress route is a single command:
microk8s helm3 install my-nginx oci://registry-1.docker.io/bitnamicharts/nginx --set ingress.enabled=true --set ingress.hostname=demo.local
This will:
· Create an NGINX Deployment
· Exposes it through a Service
· Configures an Ingress route at http://demo.local
To make it reachable from your Mac:
Find the VM IP and add it to /etc/hosts on your Mac:
· export VM_IP=$(multipass info microk8s-vm | grep 'IPv4' | awk '{print $2}')
· echo "$VM_IP demo.local" | sudo tee -a /etc/hosts
Open http://demo.local — boom, live app inside your Kubernetes cluster.
Why This Actually Matters
Local Kubernetes isn’t just about speed - it’s about development-production parity. Your MicroK8s cluster uses the same API, networking, and resource patterns as production, so when you deploy to staging or prod, there are no nasty surprises.
Most developers skip proper local testing because traditional local K8s setups are painful. MicroK8s changes that - running real Kubernetes locally is now easy, so there’s no excuse to ship broken YAML to staging.
Key takeaways:
· Local testing mirrors production.
· Easy to deploy real apps without fighting setup issues.
· Confidence in staging and production deployments.
What's Next?
You now have production-grade Kubernetes running locally. But raw clusters are just the beginning. Real applications need:
· Monitoring and alerting
· Log aggregation
· Service mesh
· CI/CD integration
MicroK8s supports all of these as simple addon commands. But that's another post.
Now go build something. Your local Kubernetes cluster is up and running - no more headaches, no more fighting.