Kubernetes development on M1 Macs

Hello friends,

I have recently acquired a M1 MacBook Air for personal use. I’m also a Mac user at work, but my MBP for work is an Intel one. I’m working in the Kubernetes infrastructure space, so it’s normal for me to develop components that need a Kubernetes API to even function, and maybe other components interacting with that API.

All of that got me thinking: What workflows are available to M1 Mac users that develop with Kubernetes? It seems that I could run an ARM-based Linux distribution as a VM and maybe get away with running a basic Kubernetes setup on it, but when it comes to third party images they might or might not have ARM/multi-arch builds.

Is anyone working on a M1 Mac? What is your experience? What workflows or workarounds have you set up for yourself?

Hope this isn’t considered out of scope for this space.

I’m actually curious about this too. Currently I’m still on a late 2019 MBP. By the time I upgrade, I’m pretty sure most problems will be solved.

Since you already have the hardware, I would encourage you to just test things out. From what I’ve read, Docker for Desktop supports the new M1’s now. I’m a fan of that app for most development and k8s testing.

Also I’m not sure why you think you’re stuck with an ARM based VM? Depending on where homebrew support is, I would assume qemu would be an option to run x86 Linux distros.

Thanks for your reply @protosam! Maybe this is helpful to you and others, here’s my experience so far:

  • I tried qemu to emulate a x86 Linux VM, but - as kind of expected - the performance is abysmal and the installation of Ubuntu 20.04 failed with a Kernel crash. Generally speaking, x86 emulation doesn’t seem to be recommended and might be something I would consider playing around with, but it doesn’t seem to be stable enough for serious work.
  • Docker Desktop for M1 Macs plus Minikube allowed me to run a Minikube installation. I’ve also tried deploying some random images and found out that x86 images can run on this setup, but it’s obviously emulated as well.

Overall, emulation seems to be the only way forward right now. Some images might already support multi-arch builds to get ARM64 image versions, but I guess the whole ecosystem won’t suddenly pivot to providing it.

I’m intending to play around some more with the emulated x86 docker images in Minikube to see how usable it is.

Thanks for sharing.

Regarding qemu, did you do a server install? X and Wayland are not that great in general when emulated. I personally opt for headless VMs and just consume services over the network or via SSH.

I tried a server install through the console installer, but that didn’t work either. Maybe I did something wrong, but the performance was also pretty bad (noticeable lag on inputs, for example).

That is unfortunate. Perhaps if you find a software out there that takes advantage of this API that Mac has, the experience will be better. I saw docker for Mac has support for it. It seemed fine on x86. Though I’m also on very very hardware right now.