I have worked with moleculer-js, which I've had great time using (https://github.com/moleculerjs/moleculer).
https://itnext.io/micro-in-action-getting-started-a79916ae3c...
Note: it is based on v1.18 for now. I'll update it to v2.x soon
You can think of Micro as an abstraction layer over distribute systems infrastructure, hiding the complexity from the developer and providing a pluggable system which allows it to operate in any environment. This means locally a dev can run with zero deps but in prod someone from the ops team can switch to etcd, cockroach, kubernetes, etc.
Predominantly the majority of our users are using Micro on top of K8s. Their primary focus is productivity and velocity of development when building microservices.
I think Go-Micro looks cool but I wouldn't suggest layering this much more than you already are. Complexity is death for distributed systems so minimizing complexity means maximizing reliability for the systems.
I could see using micro on bare metal (with all features) but trying to get the grasp of mixing with k8s (with all of micro's features). I'm assuming no one is using micro's load balancing and service discovery over k8s? I guess the broader question is, is micro highly coupled to all of its features/functions or is picking and pulling parts of it workable?
Micro seems like a framework + platform for running micro services (ideally on bare metal). (Not saying there's anything wrong with that though)