Hier erfahrt ihr, wie ihr schnell einen lokalen Kubernetes Cluster mit 3 Nodes aufsetzen könnt. Wir verwenden dabei das MicroK8s Tool von Canonical.

1. Drei Unbuntu VMs erstellen

Wir benötigen für einen hochverfügbaren MicroK8s Cluster mindestens 3 Nodes. Wir nutzen das Tool multipass um diese auf unserem Host-System (z.B. MacOS) anzulegen:

# Installieren können wir multipass unter MacOS über Homebrew
brew install --cask multipass

# zuerst erstellen wir nun unsere Master-Node
multipass launch -m 4Gb -n master

# und dann die beiden Slave-Nodes
multipass launch -m 4Gb -n slave1
multipass launch -m 4Gb -n slave2

Wir sollten den einzelnen Nodes mindestens 4GB Arbeitsspeicher zuweisen, damit unser Cluster richtig funktionieren kann.

Natürlich könnten wir hier auch einfach gleich unsere richtige Hardware nutzen und den Schritt mit den VMs überspringen, aber zum Testen empfehle ich auf jeden Fall erst einmal VMs zu nutzen!

2. MicroK8s auf allen Nodes installieren

Als nächstes müssen wir MicroK8s auf allen unseren soeben erstellten Nodes installieren. MicroK8s läßt sich ganz einfach als Snap Paket mit allen Abhängigkeiten installieren.

Am besten nutzen wir dazu 3 separate Terminal-Fenster, oder verwenden tmux, damit wir dies parallel durchführen können.

# wir verbinden uns mit der master Node und installieren dort microk8s
multipass shell master
sudo snap install microk8s --classic

# dann müssen wir noch ein paar Rechte setzen (auf allen Nodes wiederholen)
sudo usermod -a -G microk8s ubuntu
sudo chown -f -R ubuntu ~/.kube
# nun einmal aus der Shell ausloggen und wieder verbinden

# damit wir wissen, wann die Node bereit steht, können wir folgenden Befehl verwenden
microk8s status --wait-ready

# das selbe wiederholen wir auf den einzelnen slaves
multipass shell slave1
sudo snap install microk8s --classic
microk8s status --wait-ready

multipass shell slave2
sudo snap install microk8s --classic
microk8s status --wait-ready

3. Multi-Node Cluster erstellen

Nachdem alle unsere Nodes hochgefahren sind und sich initialisiert haben, können wir diese zu einem Cluster verbinden.

Dazu führen wir folgende Befehl für jede Node die wir hinzufügen wollen auf unserer master Node aus:

# auf unserer Master-Node ausführen
microk8s add-node

# wir bekommen dann folgende Ausgabe
Join node with:
microk8s join ip-172-31-20-243:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

If the node you are adding is not reachable through the default interface 
you can use one of the following:
microk8s join 10.1.84.0:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf
microk8s join 10.22.254.77:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

Wir können nun die Join-Befehle kopieren und diese auf den einzelnen Slave-Nodes ausführen:

# ersten Join-Befehl auf slave1 ausführen
microk8s join ip-172-31-20-243:25000/DDOkUupkmaBezNnMheTBqFYHLWINGDbf

# nächsten Join-Befehl auf slave2 ausführen
microk8s join ip-172-31-20-243:25000/7972409d9f18aa049ec5db65571b0c4b

Auf unserer Master-Node können wir nun mit folgenden Befehl abfragen, ob sich die Slave-Nodes erfolgreich verbunden haben und der Cluster steht:

# auf dem master ausführen
watch microk8s kubectl get no

# wenn alles fertig ist, sollte es etwa so aussehen
Every 2.0s: microk8s kubectl get no                                                                                                                                                                                                             master: Fri Feb  5 18:44:10 2021

NAME     STATUS   ROLES    AGE     VERSION
slave1   Ready    <none>   7m10s   v1.20.1-34+e7db93d188d0d1
slave2   Ready    <none>   107s    v1.20.1-34+e7db93d188d0d1
master   Ready    <none>   12m     v1.20.1-34+e7db93d188d0d1

Wir nutzen hier den watch Befehl, damit wir nicht immerzu erneut unsere Abfrage eingeben müssen, bis sich alle Nodes verbunden haben.

Mit ctrl-c können wir den watch-Befehl abbrechen und starten unseren frischen MicroK8s Cluster zu nutzen.

4. Alles wieder löschen

Wenn wir genug haben von unserem Test-Cluster, können wir die ganzen Nodes wieder löschen.

# schauen, welche VMs laufen
multipass list

Name                    State             IPv4             Image
master                  Running           192.168.64.4     Ubuntu 20.04 LTS
slave1                  Running           192.168.64.5     Ubuntu 20.04 LTS
slave2                  Running           192.168.64.6     Ubuntu 20.04 LTS

# alles stoppen und löschen
multipass stop --all
multipass delete --all
multipass purge

Diese Artikel könnten dich auch interessieren:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Back to Top