MicroK8S vs Minikube vs Other

Exploring bootstraping minikube on my osx box, I have a few questions.

From Juju’s perspective, what makes microk8s different from other installations of k8s?
More directly, why is it that Juju can bootstrap microk8s and recognize it as a standalone k8s cloud, while other k8s need to be added to an already existing controller?

Is it possible to treat all k8s the same? Are there reasons for or against this?

Possibly the microk8s k8s cloud exists because it fit well, to pull down a controller/mongo image and have a k8s cloud and controller in a matter of seconds. This provides; a) an accommodating means for a local development environment for k8s/k8s-charms, b) a great way to demo or develop juju k8s charms (get up and running on your local box in a matter of seconds), c) a step forward in bootstrapping and running juju workloads on k8s. The only downside to this is that the development workflow seems to break when ubuntu/microk8s isn’t available.

Most of my local development is done ssh’d into an ubuntu vm running on my macbook host, which makes testing juju k8s application environments that need front end access difficult. Frontend access to applications deployed in microk8s/minkube probably isn’t a very common use-case, but it has come up a few times recently, and is what sparked these questions.

I guess this makes a good case to get a laptop that runs ubuntu native - which has been on the list for a while already. In the meantime, I thought it may be helpful to do a little prying into what makes it possible to bootstrap k8s using ubuntu/microk8s and what the constraints are that disable other k8s deployments from facilitating native bootstrap also?


Not much, except that it’s easy for Juju to pick useful defaults for. Because it’s a known quantity, Juju is able to create a cloud definition itself. Once the cloud is self-registered though, microk8s doesn’t have any special access to Juju’s internals or vice versa.

Perhaps @wallyworld or someone else might want to expand on that?

1 Like

Juju is compatible with any k8s cluster. Since Juju and microk8s are Canonical products, you get the integration out of the box. To use a different k8s, the only thing you need to do is run add-k8s to extract the endpoint and credential from kubeconfig, to allow Juju to talk to the cluster. At that stage, there’s really no difference between microk8s and any other k8s.

1 Like