Add-on: Kubeflow

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.

sudo microk8s enable kubeflow

There are several options you can set when enabling Kubeflow. These are passed as environment variables. For example, debugging output can be turned on like this:

KUBEFLOW_DEBUG=true microk8s.enable kubeflow

The list of options:

  • KUBEFLOW_BUNDLE: This determines which bundle is deployed. The three preset options are full, lite, and 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 full bundle, 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 cs:kubeflow-123.

  • KUBEFLOW_CHANNEL: Which risk channel to deploy the Kubeflow bundle from. Defaults to stable, and should mostly be left alone. You can set it to candidate, beta, or edge however, if you want to deploy a bundle that is not yet stable.

  • KUBEFLOW_DEBUG: Enables debugging output. Useful for if enabling the addon fails.

  • KUBEFLOW_HOSTNAME: Sets the hostname that the Kubeflow dashboard responds to. This defaults to, where x.x.x.x comes from MetalLB. Accepts hostname with or without port set, such as foo.lan or foo.lan:8080.

    If you set this to a hostname that’s not publically 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, you will need to run this command:

    microk8s.kubectl edit configmap -n kube-system coredns

    And edit the line that says forward . to say forward . 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, set KUBEFLOW_IGNORE_MIN_MEM=true.

  • KUBEFLOW_NO_PROXY: If you have a local proxy setup, you will need to set this option. See for more information.

  • KUBEFLOW_AUTH_PASSWORD: This will set the password for the Kubeflow dashboard. If not set, a random password will be generated.