K3s

About K3s

K3s is a Kubernetes distribution packaged as a single binary. It is generally lighter than K8s: it can use sqlite3 as the default storage backend, it has no OS dependencies, etc. More information about K3s can be found on its Github repository.

K3s is an excellent choice with Liqo if you want to create a group of small clusters in your LAN or exposed via your home router with a scalable cloud-managed Kubernetes cluster.

K3s has low requirements in memory footprint and is suitable to be installed on small PCs/Servers.

K3s Installation

K3s installation can be found on the official documentation website

Liqo Installation

N.B. Please remember to export your K3s kubeconfig before installing Liqo, as presented in previous section. For K3s, the kubeconfig is stored in /etc/rancher/k3s/k3s.yaml

Pre-requirements

To install Liqo, you have to install the following dependencies:

Set-up

You can install Liqo using Helm 3.

Firstly, you should add the official Liqo repository to your Helm Configuration:

helm repo add liqo https://helm.liqo.io/

If you are installing Liqo for the first time, you can download the default values.yaml file from the chart.

helm show values liqo/liqo > ./values.yaml

The most important values you can set are the following:

VariableDefaultDescription
networkManager.config.podCIDR10.42.0.0/16The cluster Pod CIDR
networkManager.config.serviceCIDR10.43.0.0/16The cluster Service CIDR
discovery.config.clusterNameNickname for your cluster that will be seen by others. If you don’t specify one, the installer will give you a cluster name in the form “LiqoClusterX”, where X is a random number

On-Premise to On-Premise with direct connectivity

If you want to connect your cluster with another K3s/K8s in the same LAN, you do not need further configuration. You can install Liqo with just specifying the correct values for the three variables mentioned above:

helm install liqo liqo/liqo -n liqo --create-namespace --set clusterName="MyCluster" --set networkManager.config.podCIDR="10.42.0.0/16" --set networkManager.config.serviceCIDR="10.43.0.0/16"

If the clusters you would like to connect are in the same L2 broadcast domain, the Liqo discovery mechanism based on mDNS will handle the discovery automatically. If you have your clusters in different L3 domains, you have to manually create a foreign_cluster resource or rely on DNS discovery.

On-premise Cluster behind NAT

If your cluster is hosted on-premise behind a NAT and you would like to connect your cluster with another via the Internet; you should avoid to use ingress and use the following configuration:

ComponentVariablesValue
Auth Serverauth.service.typeNodePort
API serverapiserver.ip
apiserver.port
VPN gatewaygateway.service.typeNodePort

Helm Install

You can modify the ./values.yaml to obtain your desired configuration and install Liqo.

helm install liqo liqo/liqo -f ./values.yaml -n liqo --create-namespace

or ALTERNATIVELY pass the desired parameters as extra-arguments:

helm install liqo liqo/liqo -n liqo --create-namespace --set clusterName="MyCluster" --set networkManager.config.podCIDR="10.42.0.0/16" --set networkManager.config.serviceCIDR="10.43.0.0/16" ...