Ab in die private Cloud

Ich wollte schon immer einen eigenen Cluster aufbauen. Irgendwie bin ich aber nicht über die Planung  hinausgekommen. Immer war irgendeine Hürde, die ich dann nicht genommen habe, weil mir einfach die Zeit gefehlt hat.
Nun nehme ich einen neuen Anlauf. Es soll schnell und schmerzlos gehen, parallel dazu dokumentiere ich meine Schritte hier im Blog.

Da bei uns mittlerweile 4 Raspberry Pi rumliegen, versuche ich meinen Cluster mit diesen aufzubauen. Einen kurzen Blick auf die eingesammelte HW liefert folgendes:

Verfügbar:

  • 2 Raspi 4B 2GB
  • 1 Raspi 3B 1GB
  • 1 Raspi 3B+ 1GB

Diverse Kabel und ein alter Switch sind auch vorhanden. Für die Stromversogung will ich mir einen USB Lader mir mehreren Ausgängen kaufen. Leider ist hier bereits die erste Endtäuschung. Es scheint alles ausverkauft zu sein und Corona blockiert hier den schnellen Nachschub. Dann muss es eben ohne gehen. Notfalls wird die ganze Familie die Handy Netzteile vorübergehend ausleihen müssen.

Eine kurze Recherche im Internet ergibt auf Anhieb diverse Projekte die ich umsetzen könnte. Etwas das aber auf meine kunterbunte Hardware eingeht ist jedoch nicht vorhanden. Ich muss also etwas improvisieren und mir das geeignete zusammenbasteln.

Start:

Ich schaue mich mal um was es so an Anleitungen gibt. Unterschiede gibt es in folgenden Punkten

  • 32bit 64bit
  • Linux Distro mit nativ Kubernetes
  • K3s
  • Raspi Version 2 3 4

Ich entscheide mich für folgendes Setup

  • 64bit Ubuntu Distro die den Raspi 3 und 4 unterstützt
  • Kubernetes soll als Paket nachinstalliert werden
  • 1 Raspi 4 2GB Master Node
  • Die restlichen als Worker Nodes

Implementation

Viel Zeit bleibt ja nicht, darum einfach Ausprobieren. Ich will den Masternode aufsetzen.

Als Referenz dient

https://ubuntu.com/tutorials/how-to-kubernetes-cluster-on-raspberry-pi#1-overview

Zuerst mal ein Ubuntu Image downloaden und nach Anleitung auf der SD Karte installieren. ubuntu-20.04-preinstalled-server-arm64+raspi.img.xz

https://ubuntu.com/download/raspberry-pi/thank-you?version=20.04&architecture=arm64+raspi

Für Windows eignet sich der Win32DiskImager https://www.heise.de/download/product/win32-disk-imager-92033

Ich habe dann auch noch den KDE Desktop installiert.

ubuntu@ubuntu:~$ sudo apt-get install kubuntu-desktop

Noch während der Installation ist mir dann durch den Kopf geschossen, dass ich diesen ja gar nicht benötige, ich benötige nur eine einfache Konsole und ssh mit der ich mich auf dem Master einloggen will.

Also lieber den SSH Server installieren und konfigurieren.

ubuntu@ubuntu:~$ sudo apt-get install openssh-server

ubuntu@ubuntu:~$ sudo systemctl enable ssh.

Jetzt noch die IP Adresse auslesen

ubuntu@ubuntu:~$ ip address

Und schon kann ich diese von meinem Arbeitsplatz und einem SSH Terminal benutzen.

 

Kubernetes Installieren Master Node

In Ubuntu wird eine Kompakte und einfach zu installierende Version als Paket angeboten. Sie trägt den Namen microk8s https://microk8s.io/

ubuntu@ubuntu:~$ sudo snap install microk8s --classic

Oops schon der erste Fehler

Ein blinken der Speicher LED auf dem Raspi verrät mir, dass ich einfach noch etwas Geduld brauche. Anscheinend hat er noch nicht fertig installiert.

Ich versuche etwas später den kubernetes zu starten.

Sieht ja vielversprechend aus!

Kubernetes Worker Node

Nun die Worker Nodes hinzufügen

Das Aufsetzen erfolgt gleich wie beim Master Node. Image auf SD Karte Spielen, booten, openssh-server installieren.

Danach kann wieder mit einem ssh Terminal remote darauf zugegriffen werden.

Auch den Befehl kennen wir von vorher.

ubuntu@ubuntu:~$ sudo snap install microk8s --classic

Komischerweise läuft er auf dem langsamen Pi 3 anstandslos durch. Es ist vermutlich die schnellere microSD Karte die ich hier verwende die den Unterschied zum Master Node macht.

Netzwerk Adressen fixieren

Bevor ich nun Master und Worker zusammenbringe will ich noch die IP Adressen fest vergeben. Die Devices haben sich momentan mit DHCP einen Lease genommen.

Ich reserviere mir die Adressen 192.168.2.220 – 192.168.2.223 die in mein Neztwerk passen.

Die Konfiguration des Worker Nodes sieht wie folgt aus

ubuntu@ubuntu:~$ sudo vi /etc/netplan/50-cloud-init.yaml

Der Befehl

ubuntu@ubuntu:~$ sudo netplan apply

setzt die Netzwerkadresse und cancelt gleichzeitig meine Verbindung, so dass ich mich mit der neu gesetzten Adresse neu einloggen muss.

Worker Nodes hinzufügen

Fast fertig. Die Worker Nodes müssen noch zum Master hinzugefügt werden. Auf dem Master wird hierzu ein Token erstellt damit sich die Worker damit beim Master anmelden können.

Auf dem Master Node:

ubuntu@ubuntu:~$ sudo microk8s.add-node


Der angegebene Befehl wird dann auf den WorkerNodes ausgeführt. Dies muss als root passieren.

ubuntu@ubuntu:~$ sudo microk8s join 192.168.2.220:25000/c5f1f0341b2da9d354f2dd9ac052c238

Voilà mein eigener Cluster ist einsatzfähig!

Beitrag teilen

Meinrad Tschann

ICT System Engineer bei Organisation Informatik Zürich

Alle Beiträge ansehen von Meinrad Tschann →

Schreibe einen Kommentar