Quite often I prefer to read about a product and then do the installation. In the case of Kubernetes though, although it is a product I have been aware off for some time it is new for me hands on wise. I wanted to try a different approach. There are a couple of ways you can go about a lab environment on your own. You can run it on Linux, Windows or MacOS. I have seen a few people running it on ARM too. The Kubernetes Up and Running book has an example in the appendix on how to build a Raspberry K8s cluster. It all depends on your choice of poison. It does require a hypervisor to be installed before starting such as VMware Fusion, KVM or Hyper-V.
If you are a developer or want to play around with Kubernetes then Minicube could be a good option for you. It is a single host solution that combines all the requirements of a Kubernetes setup into one host. I will cover the setup of Minikube in a separate post.
The other way which is more like installing a cluster for enterprise levels is with for example Kubeadm. This is where you will have a minimum of two nodes:
- A Management node
- At least one worker node.
In my case I want to do most of my testing on an actual cluster so I will also cover a Kubeadm deployment, in a separate post.
You could also choose to go with a cloud based solution, The three big providers (GCP, Azure and AWS) all have services to cover them.
Both choices requires a container run-time interface (CRI). In most cases I come across this tends to be Docker. One of the reasons for this is that docker images have become the standard type of images used in many cases. Some of the other CRIs out there are cri-o and containerd.
So for Minikube I will run it on my MacOS system, which is also where I will demonstrate it from. It will be a single host since that is what Minikube supports. It will allow me to test out things when playing around in Minikube when I for one reason or an other cannot get to my lab. You can find the installation guide here for MacOS and here for Windows.
I decided to create a 3 node cluster (1 management node and 2 pod nodes). Each node would have 2 CPUs and 8 GB of RAM plus a minimal installation of CentOS. My three cluster hosts were installed in a VMware 6.7 lab environment, which is where I generally run most of my things. The guide is here.