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.

Prerequisites

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

[email protected]:~# apt update

2.Install Snap

[email protected]:~# apt install snapd  -y

3.Install needed packages from Snap

i)Install microk8s from Canonical using snap

[email protected]:~# 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
[email protected]:~#

ii)Install Helm, the kubernetes package manager from Snapcrafters

[email protected]:~# snap install helm --classic
helm 3.7.0 from Snapcrafters installed
[email protected]:~#

iii) Install kube-apiserver

[email protected]:~# snap install kube-apiserver
kube-apiserver 1.22.2 from Canonical✓ installed
[email protected]:~#

4. Enable crucial kubernetes services

[email protected]:~# 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

[email protected]:~# 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.

Conclusion

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.