ⓘ Note: These instructions still work, but using the add-on to install Kubeflow is no longer the recommended way to get up and running. Instead there is a complete end-to-end tutorial on deploying Kubeflow on MicroK8s now published in the Charmed Kubeflow documentation.
Available on MicroK8s version: 1.20 and 1.21
Supported arch: amd64
This addon makes Machine Learning easy by deploying Kubeflow on top of MicroK8s.
ⓘ Caution: The minimum requirements for Kubeflow are 4 CPUs, 12GB memory and 50GB storage. Be sure your system can support that before enabling it.
microk8s enable kubeflow --bundle=cs:kubeflow
There are several options you can set when enabling Kubeflow. You can run this command to view the list of available options:
microk8s enable kubeflow -- --help
The list of options are shown below. Each one can be passed in as a command-line flag (e.g.
--debug), or as a prefixed environment variable (e.g.
KUBEFLOW_BUNDLE): This determines which bundle is deployed. The three preset options are
edge, which correspond to these bundles, respectively:
Here is more information about each bundle:
full: Includes each Kubeflow service. It’s recommended to have at least 14Gb of RAM and 60Gb disk space.
lite: Eliminates less-used services from the
fullbundle, while keeping the user-friendly dashboard. This bundle is oriented towards deploying nicely on a laptop.
edge: Includes only training and serving operators, and does not include a dashboard. This bundle is suitable for lower-resource environments.
You can also directly specify a charm store URL, such as
KUBEFLOW_CHANNEL): Which risk channel to deploy the Kubeflow bundle from. Defaults to
stable, and should mostly be left as this value. You can set it to
edgehowever, if you want to deploy a bundle that is not yet stable.
KUBEFLOW_DEBUG): Enables debugging output. Useful for if enabling the addon fails. As a command-line flag, can be set or unset with
--no-debug. As an environment variable, can be set to
KUBEFLOW_HOSTNAME): Sets the hostname that the Kubeflow dashboard responds to. This defaults to http://x.x.x.x.nip.io/, where
x.x.x.xcomes from MetalLB. Accepts the hostname with or without a port set, such as
If you set this to a hostname that’s not publicly accessible, you will need to adjust MicroK8s’ DNS setup. For example, if you enable this addon on a machine named
foo.lan, and you have a DNS service set up at
192.168.1.1, you will need to run this command:
microk8s.kubectl edit configmap -n kube-system coredns
And edit the line that says
forward . 126.96.36.199 188.8.131.52to say
forward . 192.168.1.1. This will allow CoreDNS to resolve your LAN hostnames within MicroK8s.
KUBEFLOW_IGNORE_MIN_MEM): It is recommended to have at least 14 Gb of RAM for enabling Kubeflow. If you would like to enable Kubeflow with less RAM than this, pass in the
--ignore-min-memflag, or set the
KUBEFLOW_NO_PROXY): If you have a local proxy setup, you will need to set this option. See How to configure Juju for offline usage - doc - Charmhub for more information.
KUBEFLOW_AUTH_PASSWORD): This will set the password for the Kubeflow dashboard. If not set, a random password will be generated which you will be prompted to accept.