Kubernetes/MicroK8s Cluster auf dem Rapsberry Pi

Einleitung

„Gemeinsam sind wir stark“. Den Spruch lernt man schon als Kind. Das ganze lässt sich auch auf die IT übertragen. Ein Raspberry Pi allein ist für die ein oder andere Applikation sicherlich ausreichend, doch bei größeren Projekten mit hoher Verfügbarkeit, kommt er an seine Grenzen.

Daher habe ich ein Kubernetes Cluster mit Microk8s aus mehren Raspberry Pis erstellt. Wie das funktioniert stelle ich im folgenden vor.

Vorkonfiguration von CGroup

Im ersten Schritt muss die cgroup konfiguriert werden. Diese hilft bei der virtualisierung. Dazu muss folgende Zeile in die Datei „/boot/firmware/cmdline.txt“ hinzugefügt werden.

cgroup_enable=memory cgroup_memory=1

Microk8s installieren

Danach kann Microk8s über ein Snap-Paket installiert werden.

snap install microk8s --classic

Cluster erstellen und Server beitreten lassen

Als nächstes muss entschieden werden, welcher der Server der Cluster-Master werden soll. Auf diesem muss jetzt der folgende Befehl ausgeführt werden.

microk8s.add-node

Dadurch wird ein Cluster erstellt und der Beitritt des nächsten Servers vorbereitet.

Am Ende wird ein Befehl ausgegeben werden, der auf dem beitretenden Server ausgeführt werden muss. Dieser sieht in etwas so aus.

microk8s join <ip>:<port>/<string>

Das Prozedere wiederholt man solange, bis alle Server dem Cluster beigetreten sind.

Möchte man einen Server wieder aus dem Cluster entfernen, sollte man auf dem Server folgenden Befehl ausführen.

microk8s.leave

Dadurch sollte der Server das Cluster eigenständig verlassen. Wenn das nicht funktioniert, oder man keinen Zugriff auf den Server hat kann man ihn auch vom Master aus entfernen.

microk8s remove-node <name or IP>

Microk8s Konfiguration prüfen

Nun kann man prüfen ob Microk8s richtig konfiguriert wurde. Sollte es noch Probleme geben, werden diese am Ende ausgegeben.

microk8s.inspect

Nachdem alle Nodes (Server die zu dem Cluster gehören) richtig konfiguriert wurden, können wir prüfen ob alle Nodes erfolgreich beigetreten sind und arbeiten können.

microk8s.kubectl get nodes

Sollte ein neuer Node nicht aufgelistet sein, empfiehlt es sich zu warten. In meinem Fall hat der Beitritt teilweise bis zu 5 Minuten gedauert.

Sollte ein Node aufgeführt sein, aber auf noReady stehen, sollte man mit microk8s.inspect erneut die Konfiguration prüfen.

Workloads

Wenn alle Nodes dem Cluster beigetreten sind und bereit sind zu arbeiten, kann die erste Workload deployt werden. Dazu wird zuerst ein sogenanntes Manifest angelegt. Dies ist eine yaml-Datei in der spezifiziert wird, was auf und wie auf dem Cluster deployt werden soll. Auf die Erstellung dieser yaml-Datei werde ich hier nicht werter eingehen.

microk8s.kubectl apply -f deployment.yaml

Möchte man ein Deployment aktualisieren, modifiziert man die yaml-Datei und führt den gleichen Befehl aus.

Danach kann man prüfen, welchen Status die pods, also die deployten Container haben.

microk8s.kubectl get pods -o wide

Um einen Service zu prüfen gibt es folgenden Befehl.

microk8s.kubectl get svc

Herzlichen Glückwunsch. Du solltest jetzt ein funktionierenden MicroK8s Cluster haben und kannst nun deine Applikationen mit Kubernetes deployn.

Nutzung im Homelab

In meinem Fall war zu beobachten, dass die Synchronisierung zwischen den verschiedenen Nodes sehr viel CPU Leistung benötigt. Es lohnt sich also nur bei größeren Clustern, da sonst ein einzelner Server effizienter wäre. In meinem HomeLab war Kubernetes daher keine praktische Lösung.

Kommentare anzeigen

Wir nutzen Cookies

Um die Nutzung der Website zu verbessern, nutzen wir Cookies.
Desweiteren werden Google-Dienste für das schalten von Werbung verwendet. Mit der Nutzung der Website geben Sie ihr Einverständnis.
Sollte die Nutzung von Cookies abgelehnt werden, kann dies Auswirkung auf die Nutzung der Website haben.