Introduction to MicroK8s

MicroK8s is the smallest, fastest, fully-conformant Kubernetes that tracks upstream releases and makes clustering trivial. MicroK8s is great for offline development, prototyping, and testing. Use it on a VM as a small, cheap, reliable k8s for CI/CD. The best Kubernetes for appliances. Develop IoT apps for k8s and deploy them to MicroK8s on your Linux boxes.

What you’ll need

  • An Ubuntu 20.04 LTS, 18.04 LTS or 16.04 LTS environment to run the commands (or another operating system which supports snapd - see the snapd documentation)
  • At least 20G of disk space and 4G of memory are recommended
  • An internet connection

Note: If you don’t meet these requirements, there are additional ways of installing MicroK8s, including additional OS support and an offline deploy. See the alternative install page for details.

  1. Install MicroK8s

    MicroK8s will install a minimal, lightweight Kubernetes you can run and use on practically any machine. It can be installed with a snap:

    sudo snap install microk8s --classic --channel=1.18/stable

    More about setting the channel

  2. Join the group

    MicroK8s creates a group to enable seamless usage of commands which require admin privilege. To add your current user to the group and gain access to the .kube caching directory, run the following two commands:

    sudo usermod -a -G microk8s $USER
    sudo chown -f -R $USER ~/.kube

    You will also need to re-enter the session for the group update to take place:

    su - $USER

  3. Check the status

    MicroK8s has a built-in command to display its status. During installation you can use the --wait-ready flag to wait for the Kubernetes services to initialise:

    microk8s status --wait-ready

  4. Access Kubernetes

    MicroK8s bundles its own version of kubectl for accessing Kubernetes. Use it to run commands to monitor and control your Kubernetes. For example, to view your node:

    microk8s kubectl get nodes

    …or to see the running services:

    microk8s kubectl get services

    MicroK8s uses a namespaced kubectl command to prevent conflicts with any existing installs of kubectl. If you don’t have an existing install, it is easier to add an alias (append to ~/.bash_aliases) like this:

    alias kubectl='microk8s kubectl'

  5. Deploy an app

    Of course, Kubernetes is meant for deploying apps and services. You can use the kubectl command to do that as with any Kuberenetes. Try installing a demo app:

    microk8s kubectl create deployment

    It may take a minute or two to install, but you can check the status:

    microk8s kubectl get pods

  6. Use add-ons

    MicroK8s uses the minimum of components for a pure, lightweight Kubernetes. However, plenty of extra features are available with a few keystrokes using “add-ons” – pre-packaged components that will provide extra capabilities for your Kubernetes, from simple DNS management to machine learning with Kubeflow!

    To start it is recommended to add DNS management to facilitate communication between services. For applications which need storage, the ‘storage’ add-on provides directory space on the host. These are easy to set up:

    microk8s enable dns storage

    See the full list of addons

  7. Starting and Stopping MicroK8s

    MicroK8s will continue running until you decide to stop it. You can stop and start MicroK8s with these simple commands:

    microk8s stop

    … will stop MicroK8s and its services. You can start again any time by running:

    microk8s start

Next steps

Navigation

Install

Add-ons

Additional configuration

Images and registries

Troubleshooting

Tech Preview

Reference

URLs

Mapping table
Topic Path
Alternative installs (MacOS/Windows 10/Multipass) /docs/install-alternatives
MicroK8s in LXD /docs/lxd
Installing behind a proxy /docs/install-proxy
Selecting a snap channel /docs/setting-snap-channel
MicroK8s Add ons /docs/addons
Configuring MicroK8s services /docs/configuring-services
Clustering with MicroK8s /docs/clustering
Services and ports /docs/ports
Registry images /docs/registry-images
Working with a public registry /docs/registry-public
Using the built-in registry /docs/registry-built-in
Working with a private registry /docs/registry-private
Troubleshooting /docs/troubleshooting
Release notes /docs/release-notes
Command reference /docs/commands
Add on: Ambassador /docs/addon-ambassador
Add-on: linkerd /docs/addon-linkerd
Add on: fluentd /docs/addon-fluentd
Add-on: gpu /docs/addon-gpu
Add-on: dashboard /docs/addon-dashboard
Add-on dns /docs/addon-dns
Add on: MetalLB /docs/addon-metallb
Add on: host-access /docs/addon-host-access
Add on: Ingress /docs/addon-ingress
Add on: Multus /docs/addon-multus
High Availability (HA) /docs/high-availability
Get in touch /docs/get-in-touch
Working with kubectl /docs/working-with-kubectl

Redirects

Mapping table
Path Location
1 Like

Hello - I would recommend updating the docs to indicate that installing operator lifecycle manager requires the rbac add-on. Without the rbac addon the OLM CSV never succeeds.