To be as lightweight as possible, MicroK8s only installs the basics of a usable
While this does deliver a pure Kubernetes experience with the smallest resource footprint possible, 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
microk8s disable dns
… and you can check the list of available and installed addons at any time by running:
Starting from the v1.24 release, addons are organized in repositories. Repositories are essentially git projects in which users can place the addons they are interested in. To assist in creating a such repositories, the MicroK8s team maintains a template repository on github that can be forked to start a new addons collection. Although the template repository includes a HACKING.md guide with instructions on building a Python based demo addon, addons can be implemented in any programming language, even bash.
Addon repositories are found under
/var/snap/microk8s/common/addons and can be edited in place. To ease the process of adding, removing and updating such repositories the
microk8s addons repo command can be used. A repository under
https://github.com/my-org/awesome-repo can be added on a MicroK8s cluster with:
microk8s addons repo add myrepo https://github.com/my-org/awesome-repo
--reference flag can be used to point to a specific branch or tag inside the git repository.
myrepo in the above example is the repository identifier. This identifier is used to differentiate addons with the same name found on separate addon repositories.
Removing and updating a repository is achieved with the
microk8s addons repo remove and
microk8s addons repo update commands respectively.
By default the MicroK8s ships with two repositories:
core, with essential addons maintained by the MicroK8s team, and
community, with community maintained addons.
Current MicroK8s Addons
Addons in the Core Repository
The addons maintained and officially supported by the MicroK8s team at Canonical are:
community: (1.24+ tracks) Enables the community addons repository.
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.
dashboard: The standard Kubernetes Dashboard.
gpu: Enable support for GPU accelerated workloads using the NVIDIA runtime.
ha-cluster: Allows for high availability on clusters with al least three nodes.
helm: Installs the Helm 2 package manager for Kubernetes.
helm3: Installs the Helm 3 package manager for Kubernetes.
hostpath-storage: (1.24+ tracks) Create a default storage class which allocates storage from a host directory. Note!: The hostpath-storage add-on uses simple filesystem storage local to the node where it was added, which is very useful for test deployments and development work. It is not intended to be used in a production environment and is not suitable for clusters.
host-access: Provides a fixed IP for access to the host’s services.
ingress: A simple ingress controller for external access.
metrics-server: Adds the Kubernetes Metrics Server
for API access to service metrics.
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: DEPRECATED since the 1.24 release. Replaced by the hostpath-storage addon. Create a default storage class which allocates storage from a host directory. Note that this is simple filesystem storage local to the node where it was added - you may require something more complex for a cluster.
Addons in the Community Repository
This collection of third party and community maintained addons can be easily enabled with:
microk8s enable community
Here is what is currently included:
cilium: Deploys Cilium to support Kubernetes network policies using eBPF.
inaccel: (1.23+ tracks) Simplify FPGA management and application lifecycle with InAccel.
istio: Adds the core Istio services (not available on arm64 arch).
jaeger: Deploy the Jaeger Operator in the “simplest”
juju: The juju addon has been removed with the v1.24 release. MicroK8s will work happily with a locally installed version of Juju.
knative: Adds the Knative middleware to your cluster (not available on arm64 arch).
kubeflow: The kubeflow add-on has been retired as it is now much simpler to just install Kubeflow on MicroK8s as with any other Kubernetes. There is a full end-to-end tutorial for installing Kubeflow with MicroK8s in the Charmed Kubeflow documentation.
multus: (1.19+ tracks) Add multus for multiple network capability.