Back in the days, when I didn't have a cluster of Raspberry Pi computers, running Kubernetes using said cluster seemed like a good idea, at least for the purpose of learning things. Now, in hindsight, it's pretty clear that it's not all peachy-rosy for those who run k8s on Raspberry Pi nodes.
To not go around and about, I'll state pros and cons that I've discovered so far.
So my pros are, so far:
- You. Have. Personal. Cloud.
You can literally do whatever you want with it - install software, deploy and run pet projects, learn new things, or just let it lie in the corner doing nothing. - You're not paying for anything, except initially for the hardware.
- It's a great way to learn more about Linux (yes - you can run Ubuntu on Raspberry Pi, without any additional effort).
Now, to unfortunate downsides:
- I had to find Kubernetes implementation that works out of the box.
After trying without luck to install Docker and k8s onto my Pi 4's that were running standard Raspbian OS, I found that it would be much easier to use Ubuntu with MicroK8s on top. - Not all Docker images are compiled for ARM64.
Most popular Docker images have ARM64 tags now, but when you have to use something slightly more obscure, such as Redis proxy server, you'll have to find image that runs on ARM64, or compile it yourself. Latter is fortunately quite easy thanks to community effort and many instructions available on the Internet. But even then, compilation may fail in some cases due to numerous reasons. - You won't be able to use Helm properly.
I mean of course you will be able to install it. MicroK8s even has it available as a plugin that could be easily enabled. But when it's time to use Helm packages - see previous point. Yes - not all Helm packages support ARM64. In my case it was etcd-operator.
Taking all of the above into account, I still think that running k8s on Pis is a worthwhile experience for anyone interested in learning k8s and Docker. Just prepare yourself that it won't come easy to you ;)
nice write up! Thanks for sharing
ReplyDelete