Informationen über das installierte Paket erhalten Sie dann mittels snap info microk8s. Damit haben Sie neben der installierten Version immer auch Informationen über die verfügbaren Befehle und die bereits aktivierten Dienste zur Hand. Weitere Dienste lassen sich über Addons hinzufügen (Abbildung 3).

Abbildung 3: Nach der Installation von MicroK8s verschaffen Sie sich einen Überblick über die Installation und erhalten zudem eine Übersicht über die verfügbaren Befehle.
Zu guter Letzt fügen Sie den Standard-User ubuntu der Gruppe microk8s hinzu und machen ihn zum Besitzer des Verzeichnisses ~/.kube/ (Listing 5).
Listing 5
Benutzer einrichten
$ sudo usermod -a -G microk8s ubuntu $ sudo chown -f -R ubuntu ~/.kube
Cluster aufsetzen
Damit sind die Vorbereitungen erledigt, die auf allen Knoten des Clusters vorgenommen werden müssen, und wir gehen an das Aufsetzen des Clusters. Zunächst wählen Sie einen Raspberry Pi aus, der als Master-Node dienen soll, also als Kontrollrechner. Die weiteren Rechner im Cluster koppeln sich als Leaf-Nodes (Rechenknoten) an den Master.
Haben Sie sich für einen Master-Node entschieden, führen Sie auf dem entsprechenden RasPi den Befehl sudo microk8s.add-node zum Hinzufügen von Leafs zum Cluster aus. Die Rückgabe erfolgt als String im Format IP_Master-Pi:Port/token. Den Befehl zum Beitritt eines Knotens geben Sie auf dem entsprechenden Leaf-Pi ein; er folgt dem bereits erwähnten Schema in der Form microk8s.join IP_Master-Pi:Port/token (Abbildung 4).

Abbildung 4: Das Hinzufügen von Leaf-Nodes zum Cluster verläuft in zwei Schritten: Zunächst wird auf dem Master der Code zum Einbinden erzeugt. Er besteht aus der IP und dem Port des Masters, individualisiert durch ein Token. Den String übertragen Sie dann auf den Leaf.
Nach wenigen Sekunden sollte der Befehl microk8s.kubectl get nodes auf dem Master den Leaf-Node anzeigen (Abbildung 5). Bei Bedarf entfernen Sie Leafs mit dem Kommando microk8s remove-node Node, wobei Sie den Namen des Nodes der Ausgabe des vorigen Befehls entnehmen.

Abbildung 5: Einige Sekunden nach dem Join-Befehl auf dem Leaf zeigt eine Abfrage auf dem Master den neu hinzugefügten Knoten.
Jetzt ist ein guter Zeitpunkt, einen Alias zu setzen, um den Befehl microk8s.kubectl auf kubectl zu verkürzen, da Sie diesen häufiger anwenden werden. Das erreichen Sie mit dem Kommando sudo snap alias microk8s.kubectl kubectl.
Module per Addon
Um leichtgewichtig zu bleiben, installiert MicroK8s nur die Module, die es benötigt, um grundsätzlich zu funktionieren. Dem Bedarf weiterer Dienste trägt es durch Addons Rechnung. Eine Liste verfügbarer Addons liefert microk8s status (Abbildung 6). Weitere, zum Teil nicht vorinstallierte Erweiterungen listet Canonical auf seiner Webseite [9] auf. Nach der Aktivierung über das Kommando microk8s enable Addon funktionieren die Erweiterungen meist umgehend und ohne weitere Konfiguration.

Abbildung 6: MicroK8s arbeitet mit Erweiterungen, in der Standardkonfiguration sind nur wenige Dienste aktiv. Eine Statusabfrage zeigt die bereits aktivierten Addons. Weitere Erweiterungen listet die Webseite auf.
Ein Beispiel für die Verwendung von Addons bietet das Kubernetes-Dashboard, das die Kontrolle des Clusters via Webbrowser erlaubt. Dazu müssen Sie vier Addons aktivieren, was Sie mittels microk8s enable dashboard dns registry istio erledigen. Daraufhin besorgen Sie sich die benötigten Zugangsdaten auf dem Master-Node mittels microk8s dashboard-proxy. Die Ausgabe enthält eine URL und ein Token (Abbildung 7). In unserem Fall erhielten wir eine URL, die auf Localhost verwies, was aber nicht funktionierte.

Abbildung 7: Nach der Aktivierung der benötigten Dienste per Addon kann das Dashboard vorbereitet werden. Die ausgegebene IP und das Token werden anschließend in den Browser eingegeben.
Nachdem wir 127.0.0.1 gegen die IP-Adresse (falls die Namensauflösung funktioniert, auch den Rechnernamen) unseres Masters getauscht hatten, klappte es –allerdings nicht beim ersten Versuch in Chrome. Googles Browser verweigerte aus Sicherheitsgründen strikt den Zugang, eine Ausnahme war nicht möglich. Firefox erlaubte hingegen, eine Ausnahme zu wählen, und stellte nach Eingabe des Tokens (Abbildung 8) das Dashboard dar (Abbildung 9).

Abbildung 8: Nach Eingabe von IP-Adresse und Port im Browser fragt eine Maske das zuvor erzeugte Token ab. Mit Firefox funktionierte das, Chrome verweigerte den Zugang aus Sicherheitsgründen.

Abbildung 9: Im Kubernetes-Dashboard lässt sich der Cluster grafisch verwalten. Den bereits vorhandenen Steuerungsmechanismen kann man über die Anwendung Heapster weitere Metriken hinzufügen. Die Installation erfolgt dabei über das Paketmanager-Addon Helm.
Zum Abschluss dieses ersten Teils noch ein kleines Hello-World-Beispiel: Die ersten beiden Befehle aus Abbildung 10 laden, auf dem Master abgesetzt, ein Docker-Image und erstellen einen Container. Der dritte exponiert den vergebenen Port, den Sie per http://IP-Adresse:Port verwenden, um in Ihrem ersten Pod den Dienst im Browser anzuzeigen.

Abbildung 10: “Hello World” ist ein beliebtes Beispiel, um die Funktionstüchtigkeit von Webanwendungen zu testen. Für diesen Zweck gibt es auch ein kleines Docker-Image.
Fazit und Ausblick
Nachdem Sie sich nun die Grundlagen von MicroK8s erarbeitet haben, steht dem Versuch des Umstiegs auf das mächtigere Kubernetes nichts mehr im Weg. Im zweiten Teil des Artikels widmen wir uns in der nächsten Ausgabe dem sinnvollen Einsatz von MicroK8s für die private Cloud. In der Zwischenzeit können Sie sich mit der Befehlsreferenz [10] und der Dokumentation zu MicroK8s [11] und Kubernetes [12] beschäftigen. (cla/jlu)
Infos
- NetPi: https://www.netiot.shop/netPI-CORE-3
- Kubernetes: https://kubernetes.io/de/docs/concepts/overview/what-is-kubernetes
- MicroK8s: https://microk8s.io
- Minikube: https://kubernetes.io/de/docs/setup/minikube
- K3s: https://k3s.io
- Ubuntu 20.10: https://ubuntu.com/download/raspberry-pi
- Cgroups: https://www.pro-linux.de/artikel/2/1464/ressourcen-verwaltung-mit-control-groups-cgroups.html
- Sed: https://de.wikipedia.org/wiki/Sed_(Unix)
- Addons: https://microk8s.io/docs/addons
- Referenz: https://microk8s.io/docs/commands
- MicroK8s-Doku: https://microk8s.io/docs
- Kubernetes-Doku: https://kubernetes.io/de/docs/home





