Saturday, July 4, 2020

Early thoughts: MicroK8s

For now, it appears that Kubernetes is the default method for orchestrating containers in many organizations. Since my software development work has revolved around enterprise cloud solutions for the last few years, I've gone through various proof of concepts using other technologies but in the end - kubernetes tends to end up as the preference by many organizations.

One area which I've not seen handled really well is the difference in working "microservices" at the individual developer level (local sandbox) vs in a shared development environment (cloud PaaS K8S). This also related to the initial bootstrapping of new services into a cloud/K8S environment. 

Having per developer resources in a cloud can be cost prohibitive at scale and sharing resources results in coordination issues or worse (for early development).  Most places don't seem to have a standard development method across the board for local development - which shows up as bugs in early deployments.  Some developers are using Docker by itself to manage private resources or some combination with that and very specific shared resources (maybe a dev DB).  Other developers might be using a Docker/K8S solution on a Mac. So far, it often seems awkward at scale with few good/standardized practices.

With that in mind, at home I started working with Microk8s (https://microk8s.io/). I'm hoping to derive some better practices/processes which can be shared. There are a few K8S solutions I could work with but MicroK8S was something I ran across pretty early on.

Overall it works ok - there are differences between PaaS cloud K8S, role your own K8S on cloud servers and using Microk8s on a single physical system but it is still very useful from both functional and learning perspectives. I did a 'snap' install of MicroK8S on Ubuntu and after a bit fiddling got it working.  I have had a few issues when trying to do an upgrade but we'll see how things work out over time - maybe I should use a different installation method.

It does consume resources but using an i7 based system with 16GB RAM, I am able to run MicroK8S, docker, Eclipse, Chrome, DBeaver and and a few dockerized contaniners (MySQL, Postgres, etc).   I'm trying to limit the addons for now to just a handful which are focused on metrics,monitoring,ingress,storage,registry, dashboard and Istio.

I should create some aliases for commands because I do find it tiresome typing "microk8s kubectl ..." or the other dozen or so commands.

It is easy to start/stop MicroK8S so if I find I need to do other work and need the resources, I can usually just stop it.

When I started to combine other tech into the stack with this; memory has become an issue.  Using Quarkus fo build native images is super resource intensive - I'm considing upgrading to 64GB ram even it I need a new system to do so. I'll leave those details for a different post though.











No comments:

Post a Comment