MicroK8s Add ons

To be as lightweight as possible, MicroK8s only installs the basics of a usable
Kubernetes install:

  • api-server
  • controller-manager
  • scheduler
  • kubelet
  • cni
  • kube-proxy

While this does deliver a pure Kubernetes experience with the smallest of
resource footprints, there are situations where you may require additional
services. MicroK8s caters for this with the concept of “Addons” - extra
services which can easily be added to MicroK8s. These addons can be enabled
and disabled at any time, and most are pre-configured to ‘just work’ without
any further set up.

For example, to enable the CoreDNS addon:

microk8s enable dns

These add-ons can be disabled at anytime using the disable command:

microk8s disable dns

… and you can check the list of available and installed addons at any time
by running:

microk8s status

Note: Before installing add-ons which install extra client tools (e.g. Helm), be sure that the current user is part of the microk8s group, to avoid potential permission problems.

Current MicroK8s Addons

ambassador: (1.19+ tracks) Ambassador is an API and Ingress controller.

dashboard: The standard Kubernetes Dashboard.

dns: Deploys CoreDNS. This add-on may be required by others - it is
recommended you always enable it. In restricted environments you may need to
update the upstream DNS servers.

cilium: Deploys Cilium to support Kubernetes network policies using eBPF.

fluentd: Deploy the Elasticsearch-Fluentd-Kibana logging and
monitoring solution.

gpu: Enable support for GPU accelerated workloads using the NVIDIA runtime.

helm: Installs the Helm 2 package manager for Kubernetes.

helm3: Installs the Helm 3 package manager for Kubernetes.

host-access: Provides a fixed IP for access to the host’s services.

inaccel: (1.23+ tracks) Simplify FPGA management and application lifecycle with InAccel.

ingress: A simple ingress controller for external access.

istio: Adds the core Istio services (not available on arm64 arch).

jaeger: Deploy the Jaeger Operator in the “simplest”

juju: Enables a juju client to work with MicroK8s.

kata: (1.22+ tracks) Adds Kata containers support - A secure container runtime with lightweight virtual machines that feel and perform like containers.

keda: (1.20+ tracks) Deploys KEDA - Kubernetes Event-driven Autoscaling operator.

knative: Adds the Knative middleware to your cluster (not available on arm64 arch).

kubeflow: Adds Kubeflow using the Charmed Kubeflow operators.

linkerd: Deploys the linkerd service mesh ( arm64 version available in 1.20+).

metallb: Deploys the MetalLB Loadbalancer. Note that currently this does not work on macOS, due to filtering that macOS applies to network traffic.

metrics-server: Adds the Kubernetes Metrics Server
for API access to service metrics.

multus: (1.19+ tracks) Add multus for multiple network capability.

openfaas: OpenFaaS, the popular serverless framework, (not available on arm64 arch).

openebs: Add OpenEBS storage capability, (not available on arm64 arch).

portainer: Container management dashboard (see portainer.io).

prometheus: Deploys the Prometheus Operator.

rbac: Enable Role Based Access Control for authorisation. Note that this is
incompatible with some other add-ons.

registry: Deploy a private image registry and expose it on localhost:32000.
The storage add-on will be enabled as part of this add-on. See the registry
documentation for more details.

storage: Create a default storage class which allocates storage from a
host directory. N.B. This is simple filesystem storage local to the node where it was added - you may require something more complex for a cluster.

traefik: (1.20+ tracks) Adds the Traefik Kubernetes Ingress controller.

Last updated a month ago. Help improve this document in the forum.