<p>I'm using microk8s in an Ubuntu 18.04 LTS VM, 3 cores, 60 GB storage, 12 GB of memory. I followed the instructions from microk8s website <a href="https://microk8s.io/docs/" rel="noreferrer">here</a> to install it.</p>

<pre class="lang-sh prettyprint-override"><code>$ snap install microk8s --classic --channel=1.18/stable
$ sudo microk8s start
$ sudo microk8s enable dns storage dashboard
$ sudo microk8s enable kubeflow
</code></pre>

<p>This took some time but everything got started. I have 110 pods running.  When Kubeflow finished installing I got </p>

<pre class="lang-sh prettyprint-override"><code>Operator pods ready.
Waiting for service pods to become ready.

Congratulations, Kubeflow is now available.
The dashboard is available at http://10.64.140.43.xip.io/

    Username: admin
    Password: VIVGI9KB7GEX6JNAQJXZTXD97S42XD
</code></pre>

<p>Which did not work. When I put that URL into my browser, I get a white screen.  I then tried to access the kubernetes dashboard and was able to login with my token but it says it cannot find any resources.  It doesn't show anything in namespaces, nodes, or anything. </p>

<p><a href="https://i.stack.imgur.com/sD7uq.png" rel="noreferrer"><img src="https://i.stack.imgur.com/sD7uq.png" alt="enter image description here"></a></p>

<p>The namespace is still at default because I cannot get it to show <code>kubeflow</code>.  The documentation says that kubeflow doesn't work for kubernetes 1.18 but if you install an older version of microk8s it doesn't give you the option to enable kubeflow.  That also doesn't explain why the dashboard is not working.  I don't really know what to check to fix this issue. I tried using the internal IP address for the kubeflow ambassador  (kubeflow load balancer) but that didn't seem to work either.  </p>

<p>here is more detail on the <code>ambassador</code> service</p>

<pre class="lang-sh prettyprint-override"><code>sudo microk8s kubectl -n kubeflow describe service/ambassador
Name:                     ambassador
Namespace:                kubeflow
Labels:                   juju-app=ambassador
Annotations:              juju.io/controller: 7fe60455-b041-4b5e-8c85-0c8155b0f52d
                          juju.io/model: f635bf6f-c598-4d5c-841b-e798f520a898
                          metallb.universe.tf/address-pool: default
Selector:                 juju-app=ambassador
Type:                     LoadBalancer
IP:                       10.152.183.67
LoadBalancer Ingress:     10.64.140.43
Port:                     ambassador  80/TCP
TargetPort:               80/TCP
NodePort:                 ambassador  30085/TCP
Endpoints:                10.1.40.17:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason        Age                 From                Message
  ----    ------        ----                ----                -------
  Normal  IPAllocated   58m                 metallb-controller  Assigned IP "10.64.140.43"
  Normal  nodeAssigned  2m5s (x5 over 56m)  metallb-speaker     announcing from node "tatooine"
</code></pre>

<p>I am running MicroK8s 1.18.2 + Kubeflow on Ubuntu 18.04.3 LTS natively (not in a VM environment) and had the same issue. Luckily I was able to solve the issue and would like to share my solution with you. It turned out that my laptop was not able to resolve the URL to the dashboard (10.64.140.43.xip.io), so I added this address into the hosts file.</p>

<p>My installation routine:</p>

<pre><code>&gt; # Install MicroK8s
&gt; $ sudo snap install microk8s --classic --channel=1.18/stable  

&gt; # Set IP forwarding
&gt; $ sudo apt-get update -qq  
&gt; $ sudo apt-get install -qq -y iptables-persistent  
&gt; $ sudo iptables -P FORWARD ACCEPT

&gt; # Add xip.io adress to hosts   
&gt; $ sudo -- sh -c "echo '10.64.140.43\t10.64.140.43.xip.io' &gt;&gt;
&gt; /etc/hosts"

&gt; # Check if MicroK8s is Running
&gt; $ microk8s status --wait-ready | grep microk8s  
&gt; $ microk8s kubectl get nodes
&gt; $ microk8s kubectl get services

&gt; # Set kubectl alias for MicroK8s 
&gt; $ sudo snap alias microk8s.kubectl kubectl 

&gt; # Activate MicroK8s Add-ons (DNS, Storage, K8s-Dashboard)
&gt; $ microk8s.enable dns storage dashboard

&gt; # (OPTIONAL) Activate GPU Devices for Nvidia GPUs
&gt; $ microk8s.enable gpu 

&gt; # Activate Kubeflow 
&gt; $ microk8s.enable kubeflow    

&gt; # Check if MicroK8s Add-ons are Running 
&gt; $ microk8s status --wait-ready
</code></pre>

<p>Depending on your hardware and internet connection, it might take some time until all services are ready. If all services are up, simply open <a href="http://10.64.140.43.xip.io" rel="noreferrer">http://10.64.140.43.xip.io</a> in your browser and enter the user (admin) and your generated password.</p>

<p>I hope this works for you as well. :)</p>
