Du möchtest Dich mit der Umgebung von Docker und dem Erstellen eines Clusters beschäftigen? Dann bleib doch direkt hier und ließ Dir meinen Beitrag zum Thema Docker Swarm auf mehreren Raspberry Pis durch. Die Installations- und Einrichtungs-Anleitung wird mittels Proxmox virtuelle Maschinen (VMs) auf Basis von Debian 12 durchgeführt. Dies hindert aber nicht daran, es direkt auf mehreren Raspberry Pis durchzuführen.
Inhaltsverzeichnis
Was Du dafür brauchst:
- Mindestens zwei Raspberry Pis oder VMs
- auf diesen sollte Raspberry Pi OS oder Debian installiert sein
- Administrations- / Root-Rechte
Vorbereitungen
Achtung! Du solltest bei der Installation des Betriebssystems Deinen Instanzen sprechende Namen vergeben haben. Zum Beispiel: Node-1, Node-2 oder RPi1, RPi2 oder Master, Slave1, Slave2. Hier gibt es sehr viele Möglichkeiten, aber am Ende musst Du die Instanzen unterscheiden können!
Wie Du das Raspberry Pi OS auf einem Raspberry Pi 4 installierst, findest Du hier.
Die Installation von Debian 11 in einer VM unter Proxmox, findest Du hier (auch unter Version 12 anwendbar).
Im Idealfall befinden sich Deine Instanzen alle in unmittelbarer Nähe. Zum Beispiel alle auf einem Proxmox Knoten oder alle Raspberry Pis an einem Switch. Wenn dem nicht so ist, dann sollte es aber auch kein Problem darstellen. Schluss endlich müssen sie alle über das Netzwerk untereinander erreichbar sein.
Es existieren zwei Docker Swarm Versionen, eine Docker Classic Swarm, welche früher eher als ein Plugin eingebunden wurde, jedoch wird diese nicht mehr aktiv unterstützt und weiter betrieben. Anstellen von dieser Version gibt es den Docker Swarm mode, welcher genutzt werden soll und auch in dieser Anleitung genutzt wird.
1. Docker Download und Installation
Nachdem Du nun das benötigte Betriebssystem auf allen Instanzen installiert und auf dem neusten Stand gebracht hast, benötigst Du zunächst Docker. Wie Du dies installierst, kannst Du in folgenden Beiträgen nach lesen:
- Docker auf Debian mittels Repository installieren.
- Docker auf einem Raspberry Pi / Raspberry Pi OS installieren.
2. Feste IP-Adressen vergeben
Inzwischen solltest Du mindestens zwei Instanzen haben, welche das aktuelle Betriebssystem installiert haben und ebenfalls über eine erfolgreiche Docker Installation verfügen.
Um am Ende es leichter in der Administration zu haben, empfehle ich Dir Deinen Instanzen fest IP-Adressen zu vergeben.
In der Fritz!Box kannst Du dies ganz einfach hier erledigen:
Heimnetz -> Netzwerk -> Netzwerkverbindungen -> Auswahl der Instanz
-> IP-Adresse gegebenenfalls ändern
-> Haken setzen bei: Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen.
3. Docker Swarm initialisieren
3.1 Manager erstellen
Im ersten Schritt musst Du mindestens einen Manager für Dein Docker Swarm Cluster bestimmen. Den Befehl dafür führst Du auf Deinem gewünschten Manager Knoten aus. Füge dabei die IP-Adresse Deines Managers mit hinzu.
sudo docker swarm init --advertise-addr <Manager-IP-Adresse>

Wie Du sehen kannst, hast Du einen Manager angelegt, welcher einen Token generiert hat. Diesen Token benötigst Du jetzt, um entweder einen weiteren Manager oder Worker hinzuzufügen.
Führe docker info aus, um die aktuelle Situation angezeigt zu bekommen.
sudo docker info
3.2 Weiteren Manager hinzufügen
Wenn, Du einen weiteren Manager haben möchtest, zum Beispiel für eine bessere Verfügbarkeit, falls der Manager mal ausfallen sollte, dann führe folgendes auf dem Manager Knoten aus.
sudo docker swarm join-token manager

Den Befehl mit dem Manager Token kopierst Du einfach und führst diesen auf Deinem zweiten Knoten aus, welchen Du als Dein zweiter Manager fungieren soll.

Generell ist es auch so, dass ein Manager natürlich auch alles, was ein Worker macht, ebenfalls ausführen kann.
3.3 Worker hinzufügen
Nun, da Du mindestens einen Manager hast, benötigst Du noch mindestens einen Worker. Hierzu kannst Du auf einem Manager Knoten folgenden Befehl ausführen, um an Deinen Worker Token / Befehl zu gelangen.
sudo docker swarm join-token worker
Diesen Befehl führst Du im Anschluss auf Deinen weiteren Knoten aus, welche als Worker agieren sollen.


3.4 Node Liste
Mit dem folgenden Befehl kannst Du einsehen, welche Knoten aktuell sich in Deinem Docker Swarm Cluster befinden.
sudo docker node ls

Wie Du sehen kannst, siehst Du, welcher Knoten online und erreichbar ist. Aber auch welcher Knoten von den Managern der Chef (Leader) ist. Der andere Manager Knoten steht in diesem Fall auf Stand-by und wird aktiv, falls der erste Manager mal ausfallen sollte.
4. Portainer Swarm installieren
Achtung! Damit Portainer in Deinem Cluster laufen kann, muss der Port 9001 frei für Portainer sein, um die Kommunikation untereinander zu gewährleisten. Das UI von Portainer ist über den Port 9443 erreichbar.
Du lädst auf Deinen Masterknoten zunächst einmal die yml-Datei herunter. Hierbei kann sich der Link und die Version geändert haben. Deshalb am besten hier auf der Seite von Portainer selbst den Befehl holen.
curl -L https://downloads.portainer.io/ce2-19/portainer-agent-stack.yml -o portainer-agent-stack.yml
#Mittels nano kannst Du dir die Datei ansehen
nano portainer-agent-stack.yml
Nachdem die Datei sich auf Deinem Knoten befindet, musst Du sie nur noch aus führen. Diese installiert je einen Portainer Server auf Deinen Master- als auch Worker-Knoten.
sudo docker stack deploy -c portainer-agent-stack.yml portainer
Der Befehl erstellt einen Stack, also einen zusammen Schluss von Container, die in einem separaten Docker-Netzwerk sich befinden. Ebenfalls erstellt er weitere Portainer-Server und Agent-Services.

Ebenfalls kannst Du Dir die aktuell laufenden Container auf Deinen Knoten ansehen. Hier sollte nun so ähnlich wie hier aussehen:
sudo docker ps

Auch auf dem zweiten Master wurde automatisch mit ein Portainer Server ausgerollt. Und auch auf den anderen Knoten, welche sich in dem Docker-Swarm Cluster befinden.

Der Portainer-Server ist nun unter der IP-Adresse einer Deiner Knoten und dem Port 9443 über den Browser erreichbar.
https://<IP-Adresse>:9443
5. Portainer
5.1 Erste Einrichtung
Wenn Du einen Knoten mit dem Port 9443 aufgerufen hast, dann solltest Du nun auf die Startseite von Portainer gelangen. Hier vergibst Du zunächst ein sicheres Passwort für den Admin. Oder Du kannst auch schon ein bestehendes Backup einspielen.

Klicke im Anschluss auf Home, um Deine aktuelle Umgebung anzeigen zu können.

Wähle Deinen Docker Swarm aus und lege los.
Wie Du generell mit Portainer arbeiten kannst, habe ich Dir hier erklärt.
Fazit
Docker Swarm ist eine weitere hervorragende Umgebung für den Einstieg in die Arbeit mit einem Cluster.
Quellen:
- https://docs.docker.com/engine/swarm (25.06.2024 19:21)
- https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/ (25.06.2024 20:22)
- https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/ (25.06.2024 20:36)
- https://docs.portainer.io/start/install-ce/server/swarm/linux (26.06.2024 20:48)
Titelbild von Portainer und Docker
Schreibe eine Antwort