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