3 ms·
I use a Mac, and I have tried Minikube, KinD, Rancher, and also running a VM. And of course, I have Docker Desktop. All of these have failed for me as long-term
by atombender 4y ago
I use a Mac, and I have tried Minikube, KinD, Rancher, and also running a VM. And of course, I have Docker Desktop. All of these have failed for me as long-term solution, for the simple reason that they consume way too much CPU and RAM. I would not recommend them on macOS at all. The Kubelet and API server processes are designed around very inefficient polling that easily consumes a whole core even when completely idle.
These days, I use hosted Kubernetes (via Google Kubernetes Engine), which means my poor laptop isn't burdened by any of this stuff. It's great; I can just create a namespace and load it up with whatever I want to run, and the cluster will automatically provision everything. I have to be online, but I've been been in a situation where this has been a problem.
GCP also has some powerful features you can't get locally, like load balancers, automatic DNS provisioning, automatic TLS cert provisioning, virtually unlimited CPU/RAM/disk, and so on. Another added benefit of this approach is that it's trivial to give shared, public access to everything. Sharing a process with colleagues is also easy.
Using Google's Kubernetes is particularly smooth because the cluster is set up with GCP's "autopilot" mode, which is basically a smarter control plane; it's preconfigured to dynamically scale the cluster according to the workload, including CPU/memory requests. Need to run a pod with 16 dedicated cores and 32GB RAM in order to do some temporary stress testing, for example? Just declare that in the "requests" part of the pod resource, and you'll have a dedicated node in a minute or two.
Admittedly I don't run a "live" develop-compile-run-debug cycle of any application this way. Maybe it's possible, but I haven't researched how. Personally, when I want to develop on a single app, I just run the code locally, and set it up to connect to the test cluster using a VPN.