<p>I am facing a major problem in installing Kubeflow locally on my Windows 10 Machine.</p>
<p>Machine Specs - OS: Windows 10, RAM: 16GB</p>
<p>Approaches Tried To Install</p>
<ol>
<li><p>Microk8s - Not Successful</p>
<p>I get
Cannot Install MicroK8s properly, due to “MicroK8s not found error”, along with instance crashing.</p>
</li>
<li><p>MiniKube + Vagrant with VirtualBox - Partially Successful</p>
<p>“Vagrant up” is <strong>very</strong> slow. And sometimes when I manage to open the Kubeflow console locally it crashes after running a couple of experiments. Errors arise from time-to-time and it is hard to pinpoint as to why they occur.</p>
</li>
<li><p>Kind - Not Successful</p>
<p>Out-dated docs and tutorials. Old commands don’t work and the manifests have been moved to another repo.</p>
</li>
<li><p>K3s - Not Successful</p>
<p>Cannot install manifests as it has been moved to another repo. And no updated docs directing as to how we can install it.</p>
</li>
</ol>
<p>Resources Referred:</p>
<ol>
<li><a href="https://kirenz.github.io/codelabs/codelabs/kubeflow-install/#4" rel="nofollow noreferrer">https://kirenz.github.io/codelabs/codelabs/kubeflow-install/#4</a></li>
<li><a href="https://www.kubeflow.org/docs/components/pipelines/installation/localcluster-deployment/" rel="nofollow noreferrer">https://www.kubeflow.org/docs/components/pipelines/installation/localcluster-deployment/</a></li>
<li><a href="https://github.com/kubeflow/manifests" rel="nofollow noreferrer">https://github.com/kubeflow/manifests</a></li>
<li>And official doc of all the Approaches taken</li>
</ol>
<p>Digging deep what I found was that some guides say that <strong>Kubeflow 1.5.0 is not compatible with version 1.22 and onwards</strong>. And as of now there are no older releases for Kubernetes(lower than 1.22) in the official site. Is this the root cause for the issues that I am facing?</p>
<p>Are there any other way to install and setup Kubeflow locally for Windows? It is hard to find a guide/tutorial or a video which is not outdated.</p>

<p>The current <a href="https://www.kubeflow.org/docs/started/installing-kubeflow/" rel="nofollow noreferrer">https://www.kubeflow.org/docs/started/installing-kubeflow/</a> page suggests using a package.</p>
<p>None of the packages are expressly for Windows. The &quot;Charmed Kubeflow&quot; looked promising for an install on a Windows machine, so I went with it.  Here are the steps I figured out after <em>much</em> trial and error.</p>
<ol>
<li><p>Enable Hyper V for Windows.  (If you have Windows Home, see <a href="https://www.makeuseof.com/install-hyper-v-windows-11-home/." rel="nofollow noreferrer">https://www.makeuseof.com/install-hyper-v-windows-11-home/.</a>)</p>
</li>
<li><p><a href="https://multipass.run/install" rel="nofollow noreferrer">https://multipass.run/install</a>.  Choose Hyper V over Virtual Box if you can.  If you cannot, then finish the install while ignoring any VirtualBox related error, and then do Command prompt, <code>multipass set local.driver=hyperv</code>. (You may need to restart your computer here.)</p>
</li>
<li><p>Command prompt: <code>multipass shell</code></p>
</li>
<li><p>Shell:  <code>exit</code></p>
</li>
<li><p>Command prompt:  <code>multipass stop</code></p>
</li>
<li><p>In the Windows program &quot;Hyper-V Manager&quot;, select the VM. Settings:</p>
<ul>
<li>Memory, RAM: 4096, Enable Dynamic Memory.</li>
<li>Processor, Number of Virtual Processors = 2.</li>
<li>SCSI Controller, Hard Drive, Virtual hard disk, Edit, Action: Expand, New size 50 GB.</li>
</ul>
</li>
<li><p>Command prompt:</p>
<pre class="lang-bash prettyprint-override"><code>multipass start
multipass shell
</code></pre>
</li>
<li><p>Shell:  (These steps are mostly from <a href="https://charmed-kubeflow.io/docs/quickstart" rel="nofollow noreferrer">https://charmed-kubeflow.io/docs/quickstart</a>.)</p>
<pre class="lang-bash prettyprint-override"><code>sudo snap install microk8s --classic --channel=1.21/stable
sudo usermod -a -G microk8s $USER
newgrp microk8s
sudo chown -f -R $USER ~/.kube
microk8s enable dns
microk8s enable storage
microk8s enable ingress
microk8s enable metallb:10.64.140.43-10.64.140.49
microk8s enable dashboard
</code></pre>
</li>
<li><p>Check the status until those items are enabled. Shell:  <code>microk8s status --wait-ready</code></p>
</li>
<li><p>Shell:</p>
<p><em>(Note: When I tried to enable <code>istio</code> before doing <code>juju bootstrap microk8s</code>, the juju bootstrap command consistently failed with the following error regardless of how much memory I allocated to the VM:  <code>failed to bootstrap model: creating controller stack: creating statefulset for controller: timed out waiting for controller pod: unschedulable: 0/1 nodes are available: 1 Insufficient memory.</code>)</em></p>
<pre class="lang-bash prettyprint-override"><code>sudo snap install juju --classic
juju bootstrap microk8s
microk8s enable istio
juju add-model kubeflow
juju deploy kubeflow-lite --trust
juju config dex-auth public-url=http://10.64.140.43.nip.io
juju config oidc-gatekeeper public-url=http://10.64.140.43.nip.io
juju config dex-auth static-username=admin
juju config dex-auth static-password=admin
watch -c juju status --color
</code></pre>
</li>
<li><p>To access the Kubernetes dashboard:  The Charmed Kubeflow Quickstart instructions for this will not work as-is for your Windows web browser.  Try this:</p>
<ul>
<li>Shell:  <code>microk8s dashboard-proxy</code>.  (This will keep running to serve the dashboard until you Ctrl-C cancel, close the window, or shutdown the VM.)</li>
<li>Command prompt:  <code>multipass list</code></li>
<li>Windows web browser:  https://&lt;ip address for the VM from multipass list&gt;:&lt;port number from dashboard-proxy&gt;, copy-paste the token from dashboard-proxy</li>
</ul>
</li>
<li><p>To access the Kubeflow dashboard:</p>
<ul>
<li>Shell: <code>microk8s kubectl port-forward -n istio-system service/istio-ingressgateway 8080:80 --address=0.0.0.0</code>.  (This will keep running to serve the dashboard until you Ctrl-C cancel, close the window, or shutdown the VM.)</li>
<li>Command prompt:  <code>multipass list</code></li>
<li>Windows web browser:  https://&lt;ip address for the VM from multipass list&gt;:8080</li>
</ul>
</li>
</ol>
