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.