If you perform the following:
juju bootstrap microk8s a
juju bootstrap microk8s b
juju destroy-controller a
You will be left with a broken controller b because several cluster wide resources such as the ClusterRole, ClusterRoleBinding, MutatingWebhookConfiguration, ValidatingWebhookConfiguration and StorageClasses will be deleted using DeleteCollection(model.juju.is/name=controller)
The problem here is the model.juju.is/name label is not unique, unlike with hosted models (unique by namespace name == model name).
We need to ensure that all global resources outside of an owned namespace are labelled by either model uuid (because their life is tied to a model) or labelled by controller uuid (because their life is tied to a controller).
We need to add a model.juju. is/model- uuid label with the model's uuid to all global resources so they are only deleted when that model goes away.