Are you looking for lightweight, fast, and highly-available Kubernetes? Microk8s might be what you need. High availability is in MicroK8s DNA. Once you install it, you rarely have to make modifications because everything just works out of the box.
If you’re still on the fence, read on! Because in this tutorial, you will learn step-by-step how to install Microk8s locally on Ubuntu so you can quickly get started with your first deployment!
Table of Contents
Feel free to use other Linux distros, but note that you may need to install the Snap package manager separately.
Now that you have the prerequisites, your environment should be ready for the Microk8s installation. Luckily, Canonical has made the Microk8s installation quick and convenient as a Snap package.
A Snap is a self-contained package that works universally on any Linux distribution with the Snap package manager.
To install Microk8s on Ubuntu, follow these steps.
1. Open a terminal session on your Ubuntu machine, whether locally or via SSH.
2. Run the following command on the terminal to install Microk8s.
# Installing the latest Microk8s version via snap sudo snap install microk8s --classic
The image below shows the confirmation message after a successful installation. As you can see, the latest stable MicroK8s version as of this writing is v1.22.4.
3. Lastly, to confirm the MicroK8s service status, run the following command.
# Checking Microk8s status sudo microk8s status
The screenshot below confirms that the
microk8s service is running. Additionally, you can see that the
ha-cluster add-on is enabled by default, which provides high availability configuration on the current node.
Adding Your User Account to the MicroK8s Group
Running Microk8s commands requires superuser privileges, which means you have to issue every command with
sudo. To avoid this annoyance, the Microk8s installation creates a group aptly named
microk8s, where members will have superuser rights to run MicroK8s commands.
1. To add your user account to the microk8s, run the following command in the terminal.
# Adding the current user to Microk8s group sudo usermod -aG microk8s $USER
2. Adding your account to the microk8s does not automatically apply the new privileges on your current terminal session. To refresh your terminal session and the new privileges to take effect, run the below commands next.
# Re-entering user session for group update to take effect su - $USER # Reload the mircok8s group users newgrp microk8s
3. From this point, when you run
microk8s commands, you no longer have to prefix the
sudo command. To test, run the
microk8s kubectl commands in the terminal.
# Getting available nodes microk8s kubectl get nodes # Displaying all contents in all the namespaces microk8s kubectl get all -A
The commands should execute without requiring the
sudo command, as you can see below.
kubectlsubcommand controls the Kubernetes cluster manager. If you prefer to drop the
microk8sprefix and just use
*kubectlto issue commands to Kubernetes, create an alias by running the command:
alias kubectl='microk8s kubectl'.
Enabling and Accessing the Kubernetes Dashboard
Microk8s supports a wide range of add-ons. One of which is the
dashboard **add-on that enables the Kubernetes web-based dashboard. The dashboard allows viewing and interacting with the resources using a GUI. What’s even better, enabling this add-on only takes a one-liner.
1. Run the command below to enable the Kubernetes web dashboard.
# Enabling Kubernetes web dashboard microk8s enable dashboard
2. Next, get the IP address of the
kubernetes-dashboard service, which is the dashboard IP address.
# Displaying services running in the kube-system namespace microk8s kubectl get services --namespace kube-system
After running the command, take note of the IP address and the port number from the result.
3. Accessing the dashboard requires authorization using the default token. To retrieve the default token, run the commands below.
# Get the default token name token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1) # Display the token value microk8s kubectl -n kube-system describe secret $token
As you can see below, the default token name is
default-token-7dqgd. The default token name is unique on every installation.
Make sure to copy the token value. You’ll authenticate to the dashboard using this token in the succeeding steps.
4. Open a new browser window and navigate to the dashboard’s IP address you copied in step #2.
5. On the Kubernetes Dashboard sign-in page, paste the token value you copied in step #3 into the Enter token field and click Sign in.
And you now have a graphical view of the Kubernetes resources.
Deploying a Sample Application Microk8s
As long as you’ve followed the previous sections properly, you should now have a proper Kubernetes setup. This tutorial isn’t complete without you deploying a sample application for testing.
For this section, you will be deploying a base NGINX application running in a Docker container.
1. Run the command below to create a deployment called
nginx. This command pulls an NGINX image from Docker Hub, creates a pod, and runs an NGINX container inside the pod.
# Creating deployment for nginx microk8s kubectl create deployment nginx --image=nginx
The results below confirm that you’ve created the deployment successfully.
2. Next, run the command below to confirm if the pod for NGINX is running.
# Displaying available pods microk8s kubectl get pods
As you can see below, you now have one pod running.
3. While the pod running NGINX is currently active and healthy, the NGINX container inside the pod is not accessible from the host machine. To expose the application to the network, run the command below to bind the container’s port 80 to the host machine’s port 80.
# Creating service for nginx deployment and assigning nodeport microk8s kubectl create service nodeport nginx --tcp=80:80
As you can see below, the result indicates that the command has created a service for the NGINX deployment. A Kubernetes service allows network communication between pods or between pods and the host machine.
4. Before you can access the NGINX container using your browser, you first need to find its port number. To do so, run the command below to get the
nginx pod port number.
microk8s kubectl get svc nginx
In this example, the node port Kubernetes mapped on the machine for the
nginx container is 31979.
Now, open a browser window and navigate to
http://<host-ip>:<port>. If you’re accessing the container from the host, the URL would be
Stopping, Starting, and Removing MicroK8s
Running Kubernetes in the background consumes system resources. If you’re not using the service, consider stopping the service to free up resources and save power. Whether you’re starting, stopping, or uninstalling MicroK8s, you’ll only need to execute one-liners — isn’t that convenient?
To stop Microk8s and its services, run the below command.
# Stopping Microk8s microk8s stop
Execute the command below when you need to start Microk8s and its services again for further testing.
# Starting Microk8s microk8s start
But if you no longer need MicroK8s and wish to uninstall it from your computer, run the removal command below.
# Uninstalling microk8s sudo snap remove microk8s
Finally, you have come to the end of this tutorial. With the above walk-through, you have successfully installed Microk8s locally, started a single node, deployed a sample application into a cluster, and successfully stopped the cluster.
Now, what will you do next? How about adding another Microk8s node to your cluster? But it’s entirely up to you! Go crazy with it!
More from Adam The Automator & Friends
Get this interactive comic book to learn how Veeam and AWS can help you fight ransomware, data sprawl, rising cloud costs, unforeseen data loss and make you a hero!
ATA is known for its high-quality written tutorials in the form of blog posts. Support ATA with ATA Guidebook PDF eBooks available offline and with no ads!
Check out all of the ATA recommended resources!