+49 521 96686-0 info@teuto.net

Kubernetes (k3s) Tutorial

Lightweight Kubernetes zum selber installieren

Ziel der Anleitung

Im Rahmen dieses Tutorials installieren wir einen k3s One-Node Cluster in der teutoStack Public Cloud. Auf diesem installieren wir anschließend das bekannte Content Management System WordPress und machen es weltweit verfügbar.

Wichtig: Arbeiten Sie zuvor bitte unbedingt die Anleitung zum Start von virtuellen Maschinen in der teutoStack Public Cloud durch. Unter Windows können Sie das Windows Subsystem für Linux einsetzen, um der Anleitung zu folgen. Wir empfehlen hierbei die Nutzung von Ubuntu.

Über K3S

Mit einer Größe von weniger als 40 MB, ist K3S eine leichtgewichtige und offiziell zertifizierte Kubernetes Distribution, die somit besonders geeignet für den Einsatz auf IoT & Edge Geräten ist. Damit Sie sich mit Umfang und Funktionsweise von K3S vertraut machen können, haben wir diese Anleitung für Sie entwickelt, mit der Sie unkompliziert einen voll funktionsfähigen Kubernetes Cluster in unserer OpenStack Public Cloud einrichten können.

Voraussetzungen

Die folgenden Voraussetzungen müssen erfüllt sein, um dieses Tutorial durchführen zu können:

  • Zugang zur Web-Oberfläche der teutoStack Public Cloud
  • Eine virtuelle Maschine mit mindestens einer vCPU (z.B. Standard 1.1905)
  • Floating IP (offizielle IP-Nummer) für die virtuelle Maschine
  • Privaten SSH-Schlüssel für den Zugriff auf die VM

Diese Themen werden in dieser Anleitung behandelt.

Installation kubectl

In diesem Abschnitt installieren wir das Tool kubectl auf unserem lokalen Rechner. kubectl ist meist eingesetzte Kommandozeilen-Werkzeug, mit dem Kubernetes Cluster verwaltet werden. Unter Ubuntu und Debian können Sie es installieren, indem Sie die folgenden Kommandos Zeile für Zeile in einem Terminal ausführen. Unter Windows öffnen Sie hierfür ein Kommandofenster für das Windows Subsystem für Linux.

Hinweis: Unter Linux benötigen Sie sudo-Rechte und unter Umständen Ihr Benutzerpasswort.

Quelle

Installation k3sup

Zunächst installieren wir lokal auf Ihrem Rechner das Tool k3sup. Mit diesem Tool können wir sowohl Kubernetes auf dem Server installieren, als auch Applikationen auf dem Kubernetes-Cluster bereitstellen.

Um Kubernetes zu installieren, öffnen wir ein Terminal auf unserem lokalen Rechner und führen die folgenden Kommandos Zeile für Zeile aus:

Wenn die Installation erfolgreich war, sehen Sie nach dem letzten Kommando den Hilfetext des Tools. Dieser sieht wie folgt aus:

Installation k3s-master

Da nun das Tool k3sup auf unserem lokalen Rechner installiert ist, können wir es auf diesem ausführen, um unseren k3s-master Knoten auf der virtuellen Maschine in der teutoStack Public Cloud einzurichten. Hierfür benötigen wir die Floating IP (offizielle IP-Nummer) der VM, die wir für den k3s-master Knoten vorgesehen haben. In der teutoStack Web-Oberfläche finden Sie diese Nummer im Untermenü Netzwerk unter dem Punkt Floating IPs. Suchen Sie hier nach der Zeile, die zu Ihrer k3s-master VM gehört.

Ersetzen Sie im folgenden Kommando [Floating IP k3s-master] durch die Floating IP der k3s-master VM und [privater schlüssel] mit dem Pfad zu der Datei, die den privaten Schlüssel zu Ihrer VM enthält. Wenn Sie als Quelle für Ihre VM ebenfalls Ubuntu ausgewählt haben, ist ihr Username genau wie bei uns ubuntu.

Hier sehen Sie einen Auszug der zur Installation des Master Knotens zugehörigen Ausgabe.

Zudem legt k3sup für Sie eine kubeconfig Datei in dem Verzeichnis ab, von dem aus Sie das Tool aufgerufen haben. Diese Datei ermöglicht Ihnen den Zugriff auf Ihren Cluster und ist unbedingt vertraulich zu behandeln. Am Ende der vorangegangenen Ausgabe finden Sie die Zeile export KUBECONFIG=[…]. Kopieren Sie diese Zeile in Ihrem Terminalfenster und führen Sie das Kommando in selbigem aus, um die Datei kubeconfig für Tools wie kubectl und k3sup verfügbar zu machen. Diese prüfen automatisch, ob die Umgebungsvariable KUBECONFIG gesetzt ist und benutzen die in der kubeconfig enthaltenen Informationen, um auf den k3s Cluster zuzugreifen.

kubectl haben wir zu Beginn dieses Tutorials installiert. Damit kann jetzt die Verbindung zum Cluster getestet werden. Führen Sie das folgende Kommando aus:

Die Ausgabe sollte der folgenden ähneln:

Somit ist die Installation des k3s-master Knotens abgeschlossen.

Somit ist die Installation des k3s-master Knotens abgeschlossen.

Cluster grafisch untersuchen mit k9s

Mit dem Tool k9s können Sie Ihren Kubernetes Cluster analysieren und verwalten. Dabei steht Ihnen eine grafische Aufbereitung der Informationen zur Verfügung. Mit den folgenden Kommandos können Sie das Tool auf Ihrem lokalen Rechner installieren.

Da Sie zuvor die Umgebungsvariable KUBECONFIG gesetzt haben, hat k9s Zugriff auf Ihren Cluster. Schauen Sie sich an dieser Stelle gerne in Ihrem Kubernetes um.

Installation von Applikationen

Über das Tool k3sup können Sie eine Vielzahl von Applikationen mit sehr wenigen Kommandos installieren. Auf Grundlage einer Technologie namens Helm (Paketmanager für Kubernetes) können entsprechende Installationsvorlagen aus dem Internet bezogen und direkt angewendet werden. Diese Vorlagen werden auch Helm Charts genannt.

Die folgenden Applikationen werden direkt von k3sup unterstützt:

Diese Apps können folgendermaßen installiert werden:

Zudem können Sie weitere Charts, die nicht in der vorherigen Liste aufgeführt sind, installieren. Dazu zählt auch WordPress. Unter https://hub.helm.sh/ finden Sie weitere Applikationen, die über das Helm Repository installiert werden können.

Installation WordPress

Wir verwenden für dieses Beispiel WordPress. Dafür führen Sie das folgende Kommando im Terminal auf ihrem lokalen Rechner aus:

Wichtig ist zu beachten, dass ein Namespace gesetzt wird. Aktuell gibt es einen Bug in k3sup der verhindert das Apps so im default Namespace installiert werden können. Namespaces trennen den Kubernetes Cluster in logische Bereiche. Hier sehen Sie die Ausgabe zum vorherigen Kommando:

WordPress ist nun installiert.

HTTP Port bei teutoStack freigeben

Wenn Sie in Ihrem Browser eine Internetseite aufrufen erfolgt dies üblicherweise über HTTP (Port 80) oder HTTPS (Port 443). Da wir noch kein HTTPS konfiguriert haben, werden Sie die WordPress-Seite über das HTTP Protokoll erreichen. Üblicherweise wird HTTP über den Port 80 kommuniziert. Dafür erweitern wir unsere default Sicherheitsgruppe entsprechend. Öffnen Sie in der teutoStack Web-Oberfläche über das Untermenü Netzwerk den Punkt Sicherheitsgruppen und klicken Sie in der Zeile der default Sicherheitsgruppe auf den Button Regeln verwalten.

Klicken Sie auf Regel hinzufügen

Wählen Sie für das Feld Regel den Wert HTTP aus und klicken Sie auf hinzufügen.

Nun erlaubt die Sicherheitsgruppe für alle Instanzen, die Mitglied sind, eingehenden Kommunikation auf Port 80. In einer produktiven Umgebung würde man den Zugriff auf das Minimum an Instanzen beschränken, die erreichbar sein sollen.

WordPress mit Ingress verfügbar machen

Der externe Zugriff auf den Port 80 ist konfiguriert. Dennoch ist es aktuell noch nicht möglich, die WordPress-Webseite aus dem Internet zu betrachten.

Um eine Anwendung, die im Cluster läuft, nach außen verfügbar zu machen, kann ein sogenannter Ingress verwendet werden. Ein Ingress ist eine Kubernetes-Ressource, die den externen Zugriff auf einen Service, basierend auf Hostnamen, ermöglicht. Dazu benutzen wir in diesem Beispiel den nginx-ingress.

Dieser lässt sich auch direkt über k3sup installieren.

Für die Installation führt man folgenden Befehl aus:

Um WordPress jetzt über den nginx-ingress verfügbar machen zu können, muss eine Ingress Ressource, die auf den Service von WordPress zeigt, auf dem Cluster angelegt werden.

In diesem Beispiel nutzen wir nip.io, um einen gültigen Hostnamen für unsere IP-Adresse zu haben. nip.io ist ein Dienst der Wildcard DNS für jede beliebige IP Adresse zur Verfügung stellt. Man hängt einfach .nip.io an die IP Adresse des Nodes an und schon kann man diese Domain für den Ingress nutzen.

Um die Ingress-Ressource anzulegen, erstellen Sie auf Ihrem lokalen Rechner eine leere Datei mit dem Namen wp-ingress.yaml und füllen Sie diese mit dem folgenden Inhalt:

Ergänzen Sie in der Zeile, die mit – host: beginnt die Floating-IP der k3s-master Instanz. Behalten Sie den Zusatz .nip.io hinter der IP-Nummer unbedingt bei und speichern Sie die Datei.

Um diese Ingress-Ressource auf dem Cluster zu installieren, führen Sie den folgenden Befehl aus. Hierbei gehen wir davon aus, dass Sie sich nach wie vor in dem Verzeichnis befinden, in dem Sie auch die Datei wp-ingress.yaml angelegt haben.

Der Abschnitt -f wp-ingress.yaml sagt dem Tool kubectl, dass es die zu installierende Ressource aus der Datei wp-ingress.yaml lesen soll. -n wordpress teilt dem Cluster mit, dass die Ressource im Namespace wordpress installiert werden soll.

Wichtig ist, dass der Ingress im selben Namespace wie der Rest von WordPress installiert wird. Um zu prüfen ob der Ingress wirklich angelegt wurde, kann man sich die Ingress Ressourcen im wordpress Namespace anzeigen lassen. Führen Sie dazu das folgende Kommando aus:

Die zugehörige Ausgabe ähnelt:

Nun kann WordPress unter der Adresse aufgerufen werden, die in der vorherigen Ausgabe unter HOSTS angezeigt wird. Beachten Sie, dass Ihre IP-Adresse von der in diesem Beispiel abweicht. 

Indem Sie an die URL Ihres WordPress /wp-admin anhängen, können Sie das WordPress Administrations-Backend ansteuern. Bei uns sieht die URL wie folgt aus:

http://212.15.212.125.nip.io/wp-admin

Wir haben jedoch an keinem Punkt der Installation ein Passwort gesetzt. Das wurde automatisch während der Installation erledigt.

Der Standard Nutzer ist user und das Passwort lässt sich folgendermaßen im Terminal ihres lokalen Rechners anzeigen:

Nun können Sie sich bei WordPress anmelden und Ihren Blog erstellen.

Zusammenfassung

Sie haben es geschafft! Mit k3sup ist es also möglich in kurzer Zeit und mit wenigen Kommandos einen voll funktionsfähigen Kubernetes-Cluster zu erstellen und Applikationen auf diesem zu betreiben.

 

 

Optional: Pods via port-forwarding lokal verfügbar machen

Sie können mit kubectl den Port eines Kubernetes Service im Cluster auf Ihren lokalen Rechner weiterleiten, wenn Sie beispielsweise die WordPress-Seite testen und bearbeiten wollen, ohne diese gleich weltweit verfügbar zu machen.

Die einfachste Möglichkeit ist mit kubectl den Port auf den lokalen Computer weiterzuleiten. Dazu nutzt man das port-forward Feature von kubectl. Das Vorgehen ist für Ihr Linux Terminal sowie für Ihr Terminal im Windows Subsystem für Linux gleich. Führen Sie das folgende Kommando auf Ihrem lokalen Rechner aus:

Nun kann man lokal im Browser unter folgender Adresse WordPress erreichen:

http://localhost:80