How to Setup a Single Node Kubernetes Cluster

Kubernetes, also known as K8S, is the most popular container orchestration tool. It is fully open source. Kubernetes allows you to automatically deploy, scale and manage containerized applications.

In this guide, you will learn how to set up a single node kubernetes cluster using MicroK8S. The guide is a first of several in this series that are intended to make is easy for you to run applications in kubernetes. We will set up the cluster, set up Longhorn as our storage solution, deploy WordPress and have it run securely using https by issueing a Lets Encrypt SSL

But first, lets get started with initial set up.


Our cluster will utilize popular FOSS, tells you just how much you can do with FOSS:

  • Ubuntu 20.04
  • Server with at least 4GB RAM, 2 Core, 50GB Storage, In our case, we’ll use 8GB RAM, 4 core, 200 SSD Storage
  • Root access to the server
  • A domain name (get affordable domains from as low as $1 from Truehost Cloud)

1.Login to the server and Update

root@vmi663745:~# apt update

2.Install Snap

root@vmi663745:~# apt install snapd  -y

3.Install needed packages from Snap

i)Install microk8s from Canonical using snap

root@vmi663745:~# snap install microk8s --classic --channel=latest/stable 2021-10-11T15:09:06+02:00 INFO Waiting for automatic snapd restart…microk8s v1.22.2 from Canonical✓ installed

ii)Install Helm, the kubernetes package manager from Snapcrafters

root@vmi663745:~# snap install helm --classic
helm 3.7.0 from Snapcrafters installed

iii) Install kube-apiserver

root@vmi663745:~# snap install kube-apiserver
kube-apiserver 1.22.2 from Canonical✓ installed

4. Enable crucial kubernetes services

root@vmi663745:~# microk8s.enable storage ingress dns

This command enables microk8s storage called microk8s-hostpath, then enables Nginx Ingress controller for external access and finally enables Coredns, which handles dns routing within the cluster.

5. [OPTIONAL]. You can configure your cluster on an IDE to simplify managing it. I like Lens

To configure the cluster on Lens, you first need to get the Kubeconfig

root@vmi663745:~# microk8s.kubectl config view --raw

You can then configure it on your Lens IDE under Cluster section. Please check out the docs or demo at Lens website to better understand the steps of configuring the cluster on your Lens IDE.


The above set up should get you up and running, ready to deploy your database and applications. However, the default storage provider used, microk8s-hostpath, is not recommended for production use case. There are other better performing, feature full storage providers available. When selecting a storage provider, there are various factors to consider including dynamic provisioning, ability to take snapshots, performance (IO throughput) etc. Consider this article for a detailed comparison of various popular production storage providers

One such storage provider is Longhorn. Lets see how add Longhorn storage provider on our set up above. Please read on…

Leave a Reply

Your email address will not be published. Required fields are marked *