Aus Raspberry Pi Geek 02/2021

Raspberry-Pi-Cluster mit MicroK8s und Ubuntu 20.10 (Seite 2)

Achten Sie beim Herunterladen von Ubuntu Server darauf, explizit die 64-Bit-Version für den RasPi 4 auszuwählen. Falls sich für Ihren Anwendungsfall die Desktop-Variante besser eignet, können Sie auch diese verwenden. Soll der Cluster im Dauerbetrieb laufen, empfiehlt es sich, den Rechnern jeweils einen Lüfter zu spendieren. Zudem vergeben Sie für die RasPis auf dem Router jeweils eine feste IP-Adresse für Ihr Netzwerk sowie einen eigenen Hostnamen, beispielsweise ubuntu0, ubuntu1 und so weiter. Falls Sie den Cluster auch von außerhalb des lokalen Netzes erreichen möchten, setzen Sie einen dynamischen DNS-Dienst auf.

Der erste Schritt nach dem Herunterladen des Betriebssystems ist das Entpacken des Archivs mit der Endung .xz in ein Abbild mit der Endung .img. Dieses Image schreiben Sie nun auf die entsprechenden SD-Karten. Nachdem Sie den ersten RasPi gestartet haben, dauert es ein paar Minuten, bis ein User angelegt ist und ein Prompt erscheint.

User und Passwort lauten ubuntu; das Passwort müssen Sie nach der ersten Anmeldung ändern. Daraufhin zeigt das Terminal verschiedene Informationen an, unter anderem auch die IPv4- und IPv6-Adressen. Sie sollten sich die IP-Adresse samt Hostnamen notieren, da ja zumindest noch eine weitere folgt (Abbildung 2).

Abbildung 2: Nach erfolgreichem Start und der ersten Initialisierung von Ubuntu Server zeigt das Terminal einige Systeminformationen an, neben der Temperatur der CPU unter anderem auch die jeweilige IP-Adresse.

Abbildung 2: Nach erfolgreichem Start und der ersten Initialisierung von Ubuntu Server zeigt das Terminal einige Systeminformationen an, neben der Temperatur der CPU unter anderem auch die jeweilige IP-Adresse.

Docker bereitstellen

Beim anschließenden Versuch, uns per SSH zu verbinden, stellten wir erfreut fest, dass Ubuntu hier seit unserem letzten Versuch nachgelegt und die Voraussetzungen für den SSH-Zugang bereits installiert und aktiviert hat. Das erspart langwierige Vorbereitungen.

Bevor es an die Installation von MicroK8s geht, stellen Sie zunächst Docker bereit, um später Container erstellen zu können. Das erledigen Sie mit dem Befehl sudo apt install docker.io, der rund 270 MByte auf den RasPi spült, was einen Moment dauert. Anschließend bereiten Sie Docker auf seine Aufgaben vor (Listing 1).

Listing 1

Docker vorbereiten

$ sudo groupadd docker
$ sudo usermod -aG docker $USER
$ newgrp docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo systemctl enable docker

Zur besseren Ressourcenverwaltung und Isolation der einzelnen Container durch MicroK8s konfigurieren Sie anschließend die Kernel-Funktion Control Groups (Cgroups [7]). Den jetzigen Konfigurationsstand lassen Sie sich per sudo docker info anzeigen. Am Ende sehen Sie einige Warnungen, die Sie für die Nutzung mit MicroK8s beheben müssen. Zudem wird als Cgroup-Driver cgroups angezeigt. Auch das sollten Sie ändern, damit Systemd die Verwaltung übernimmt.

Zunächst erstellen Sie mit dem Kommando sudo nano /etc/docker/daemon.json die Datei daemon.json und befüllen Sie mit den Anweisungen aus Listing 2. Danach passen Sie noch die Kernel-Zeile in der Datei /boot/firmware/cmdline.txt an, um weitere Cgroup-Funktionen zu aktivieren.

Listing 2

daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

Um die Anweisungen automatisch richtig zu platzieren, bedienen Sie sich des Stream-Editors Sed [8] – den entsprechenden Befehl finden Sie in der ersten Zeile von Listing 3. Anschließend überzeugen Sie sich vom Erfolg der Aktion (zweite Zeile).

Listing 3

Cgroups nutzen, Container bauen

$ sudo sed -i '$ s/$/ cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1/' /boot/firmware/cmdline.txt
$ cat /boot/firmware/cmdline.txt
[...]
$ sudo docker run -it ubuntu bash

Nach einem Reboot des RasPi sollte der Befehl sudo docker info nun das gewünschte Ergebnis zeigen. Sie können als schnellen Funktionstest einen Container mit einem minimalen Ubuntu erstellen (Zeile 4), der Sie mit einem Root-Terminal eines eingebetteten Ubuntu innerhalb Ihrer Ubuntu-Installation ausstattet.

MicroK8s installieren

Jetzt ist das System bereit für die Installation von MicroK8s. Dazu dienen die Befehle aus Listing 4. Eigentlich ließe sich das Paket mit nur einem Befehl einspielen, doch das funktionierte im Test nicht, sodass wir mit dem zweiten Befehl die Version aktualisieren mussten. Einen Weg, MicroK8s ohne Snapd zu installieren, konnten wir nicht finden.

Listing 4

MicroK8s installieren

$ sudo snap install microk8s --classic --channel=1.18/stable
$ sudo snap refresh microk8s --classic --channel=1.19/stable
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben