K3s installatie bare-metal/VM

Op een lokale computer of op een VM met een recente Linux OS zoals bv Ubuntu 22, is het vrij eenvoudig om een K3s cluster aan te maken. Er is op die host een containerisatie nodig en aanbevolen is om ‘containerd‘ daarvoor te gebruiken.

sudo apt install -y containerd
sudo systemctl enable containerd --now

En vervolgens kan K3s als server geïnstalleerd worden via

curl -sfL https://get.k3s.io | sh -
sudo kubectl cluster-info

Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Dit is de eenvoudigste methode om een K3s-server op te starten, bijvoorbeeld het gebruik van een specifieke versie, een externe datastore op postgreSQL en een token voor extra nodes:

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.23.8+k3s1" sh -s - server \
--token=SECRET \
--datastore-endpoint="postgres://"
sudo kubectl get nodes

NAME  STATUS ROLES                AGE VERSION
k3s-1 Ready  control-plane,master 30s v1.25.5+k3s2

Er zijn diverse opstart-parameters mogelijk om de configuratie te tunen, kijk daarvoor op de website van Suse/K3s.

Om extra nodes toe te voegen aan dit cluster is een token nodig en die staat op de eerste K3s-server in /var/lib/rancher/k3s/server/token

Een voorbeeld voor een HA configuratie op Raspberry Pi’s kun je hier vinden.


Toevoegen Rancher Manager (self signed cert)

Met een helm chart Rancher Manager toevoegen kan van een werkstation waarop helm en kubectl zijn geïnstalleerd en de waarop de kubeconfig-file van het cluster staat.

De kubeconfig-file staat op de K3s-server in /etc/rancher/k3s/k3s.yaml en deze kan gekopieerd worden naar mijn werkstation als ~/.kube/config

Daarin wel even het IP adres van het K3s cluster aanpassen van localhost naar extern ip van de k3s-server!

Als eerste is cert-manager nodig, ook als je een local-adres gaat gebruiken voor Rancher. Dit kan eenvoudig met kubectl geïnstalleerd worden:

kubectl create namespace cert-manager
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.10.2/cert-manager.yaml

Vervolgens kan Rancher Manager geïnstalleerd worden. Allereerst een Helm repository toevoegen met:

$ helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
$ helm repo update

en hierna kan het eigenlijke werk beginnen. Voor de eenvoud van geldige certificaten maak ik hier gebruik van een self-signed certificate in Rancher en gebruik rancher.digitalinfo.local als domeinnaam met een verwijzing naar het externe ip adres van de node. Deze zet ik ook in mijn hosts-file van mijn werkstation waarop helm staat.

$ helm install rancher rancher-stable/rancher --version v2.6.8 \
--namespace cattle-system \
--create-namespace \
--set hostname=rancher.digitalinfo.local

Volg de aanwijzingen op het scherm om het wachtwoord van de admin-user te vinden. Nadat alle deployments gereed zijn kan met een browser via de URL van rancher het wachtwoord aangepast worden.

Uiteindelijk kan dan Rancher Manager gebruikt worden om de cluster(s) te beheren.