How to Run Kubernetes Locally Without Docker Desktop (Using k0s)

DevOps & Cloud Engineer — building scalable, automated, and intelligent systems. Developer of sorts | Automator | Innovator
Search for a command to run...

DevOps & Cloud Engineer — building scalable, automated, and intelligent systems. Developer of sorts | Automator | Innovator
Artificial Intelligence has become one of the biggest talking points in software engineering. Every week, a new tool promises to automate deployments, fix production incidents, or replace developers a

You spin up a Kubernetes workload. You connect to PostgreSQL. You add sslmode=require because security matters. And then PostgreSQL replies with: server does not support SSL, but SSL was required Wai

When you first approach Tencent Cloud, it feels familiar if you come from AWS or Azure. There are VPCs, Kubernetes clusters, load balancers, object storage, IAM, everything you would expect. But once

When I first automated Docker builds and deployments, I thought the hard part would be writing the YAML. It was not. The real challenges were versioning, preventing accidental rollbacks, handling envi

For a long time, Docker Compose felt like the perfect solution. Simple YAML, fast local setup, predictable behavior. For a single service or even a small stack, it works beautifully. But at some point, reality catches up. As the application grew, tra...

CodeOps Studies
40 posts
Simple write-ups on day to day code or devops experiments, tests etc.
Running Kubernetes locally is often associated with tools like Docker Desktop, Minikube, or kind. But maybe:
You don’t want to use Docker Desktop (licensing / performance / fallback reasons)
You want something lightweight and production-like
You want full Kubernetes, not a simplified local version
This is where k0s comes in.
It’s a zero-friction Kubernetes distribution, batteries included, simple to install, and works great for learning, testing, or small homelabs.
Not hating Docker Desktop is convenient, but:
| Reason | Explanation |
| High Resource Usage | It runs background services and a full Linux VM. |
| License Restrictions | Organizations often need paid licenses. |
| Not Ideal for K8s Learning | Hides key networking and runtime internals. |
If you want a real Kubernetes cluster feel with very low overhead, k0s and k3s are great fits.
| Feature | k0s | k3s |
| Purpose | Cloud-native single-node or production cluster | Edge computing + lightweight IoT |
| Runtime | containerd built-in | containerd (default) |
| Install | Extremely simple | Also simple |
| Good for | Developers + homelabs | Small clusters, ARM boards, edge setups |
In this tutorial, we will use k0s because it’s very clean and runs well on macOS via virtualization.
You can follow this guide on any of the following:
| Platform | Setup Required |
| Linux (Ubuntu / Debian / Fedora etc.) | You’re good, install directly |
| macOS | Run an Ubuntu VM (UTM / Parallels / VMware / QEMU) |
| Windows | Run Ubuntu in WSL2 or a VM |
Important: k0s runs on Linux, but you can still control the cluster from macOS/Windows using
kubectl.
Inside your Linux environment (or VM) run:
sudo apt update && sudo apt install curl -y
curl -sSLf https://get.k0s.sh | sudo bash
Verify:
k0s version
sudo k0s install controller --single
Start it:
sudo k0s start
Check status:
k0s status
Create the kubeconfig:
mkdir -p ~/.kube
sudo k0s kubeconfig admin > ~/.kube/config
chmod 600 ~/.kube/config
Test Kubernetes:
kubectl get nodes
You should see something like:
NAME STATUS ROLES AGE VERSION
k0s-node Ready control-plane 30s v1.30.x
You now have Kubernetes running without Docker Desktop!
| Feature | k0s Benefit |
| Lightweight | Uses less RAM/CPU than Docker Desktop or MicroK8s |
| Simpler | One binary installs everything |
| Real Kubernetes | Not a simulation like kind/minikube |
| Cloud-ready | Same config can run on servers later |
You don’t need Docker Desktop to run Kubernetes locally.
Just:
Use Linux (or run Linux in a VM)
Install k0s
Start your cluster
Use kubectl like normal
You now have a full Kubernetes environment ready for:
Local development
CI testing
Homelab setups
Learning & experimentation