The easiest way I knew for running a local Kubernetes cluster was minikube. It installs like a breeze and creates a fresh clean cluster with minimal effort on my part. Sure, it takes a while to get going and uses quite a bit of system resources, but it performs quite a feat. I am quite fond of it really.
Last week I learned about k3s (https://k3s.io/) – light weight Kubernetes, for Linux servers in general and with support for ARM64 and ARMv7. k3s works great from something as small as a Raspberry Pi or as large as an AWS a1.4xlarge 32GiB server. I took k3s for a spin. In a Linux environment it has a Kubernetes cluster running in hardly any time at all – and with minimal system overhead.
The quick steps to get going:
To download k3s
curl -sfL https://get.k3s.io | sh –
k3s kubectl get node
to check on the K8S node:
To run a Deployment for nginx:
sudo k3s kubectl create deployment nginx –image=nginx
and to expose it as a service:
sudo k3s kubectl create service nodeport nginx –tcp=80:80
At this point, the container image was downloaded and a deployment created (just regular Kubernetes stuff really) and now the service was created and exposed on a local node port 30805:
I can access the NGINX server from a CURL or a local browser:
This is not so surprising – that is K8S for you. The ease of installing and running a local Kubernetes cluster with so little overhead is the real magic here. What can we do – if the cost of running a Kubernetes cluster is so small? If it fits in edge devices in IoT environments? Note: k3d is a utility designed to easily run k3s inside Docker.
As stated on the k3s website: k3s is wrapped in a simple package that reduces the dependencies and steps needed to run a production Kubernetes cluster. Packaged as a single binary, k3s makes installation and upgrade as simple as copying a file. TLS certificates are automatically generated to ensure that all communication is secure by default. And: k3s is a Certified Kubernetes distribution designed for production workloads in unattended, resource-constrained, remote locations or inside IoT appliances.
For detailed instructions: https://rancher.com/docs/k3s/latest/en/