IT Projekte / Home Lab / Smart Home / Games

Allgemein, Docker, Proxmox

Kubernetes Cluster auf Proxmox mit Rancher erstellen

In diesem Beispiel nutze ich ein RKE Cluster, mehr Informationen und zu den Unterschieden der einzelnen Rancher Produkte findest Du hier. So wie ich es verstanden habe, ist es aber von Vorteil, wenn man auf ein RKE2 Cluster setzt, welche die Funktionen von RKE und K3S vereint. Ich möchte Dir zeigen, wie Du auf Basis von Ubuntu Dein eigenes Kubernetes Cluster aufbauen kannst.

1. Download Ubuntu Server 22.04

Lade Dir zunächst einmal die Ubuntu Server 22.04 ISO-Datei herunter. Den Link dazu findest Du hier.

Download der Ubuntu Server ISO-Datei
Download der Ubuntu Server ISO-Datei

Nach dem Download lädst Du die ISO-Datei auf Deinen Proxmox Host hoch.

Upload der ISO-Datei
Upload der ISO-Datei
Upload
Upload

2. Erstelle mehrere VM in Proxmox

Lege mehrere, mindestens aber drei virtuelle Maschinen (VM) in Proxmox, mit der so eben heruntergeladenen ISO-Datei, an.

2.1 Erstelle eine neue VM

Lege zunächst eine neue VM an.

Erstelle eine virtuelle Maschine
Erstelle eine virtuelle Maschine

Vergebe eine ID und einen Namen Deiner VM.

Vergebe eine ID und einen Namen Deiner VM.
Vergebe eine ID und einen Namen Deiner VM.

Wähle die ISO-Datei zur Installation aus.

Wähle die ISO-Datei aus.
Wähle die ISO-Datei aus.

An dem System nimmst Du keine Änderungen vor.

Systemeinstellungen
Systemeinstellungen

Füge eine Speichergröße hinzu, für die nachfolgenden Daten.

Füge Speicherplatz hinzu.
Füge Speicherplatz hinzu.

Wähle die Anzahl der CPU-Kerne aus. Ich vergebe hier nur zwei, da ich maximal acht zur Verfügung stehen habe.

Anzahl der CPU-Kerne vergeben.
Anzahl der CPU-Kerne vergeben.

Hier legst Du die Größe des Arbeitsspeichers fest. Für den Anfang vergebe ich 4 GB.

Arbeitsspeicher vergeben
Arbeitsspeicher vergeben

Die Netzwerkeinstellungen belasse ich, wie sie sind.

Netzwerkeinstellungen
Netzwerkeinstellungen

Jetzt ist es auch schon so weit, dass die VM-Einstellungen bestätigt und die VM gestartet werden kann.

2.2 Ubuntu Server Installation

Öffne nach dem Start Deiner VM die Konsole. Hier sollst Du zu Beginn Deine Sprache auswählen.

Sprache wählen
Sprache wählen

Danach wirst Du das Tastaturlayout angeben müssen, mit welchem Du den Server bedienen möchtest. Am einfachsten ist dies über den Button ‘Tastatur erkennen’. Hier wirst Du aufgefordert, die entsprechenden Buchstaben zu betätigen.

Tastaturlayout
Tastaturlayout

Bei der Auswahl, welcher Typ von Installation durchgeführt werden soll, wählst Du Ubuntu Server aus.

Installationstyp
Installationstyp

Hier kannst Du die Netzwerkverbindungen, IP-Adresse und weiteres ändern, wenn Du möchtest. Ansonsten kannst Du auch dies einfach bestätigen. Ich persönlich habe diese Einstellung gelassen, da ich im Anschluss in meiner Fritz!Box der VM eine feste IP-Adresse vergeben habe.

Netzwerkverbindungen
Netzwerkverbindungen

Falls Du über einen Proxy verfügst, dann trage diesen bitte jetzt ein. Wenn nicht, lasse das Feld einfach frei.

Proxyeinstellungen
Proxyeinstellungen

Die Konfiguration des Ubuntu-Archiv-Mirrors belasse ich bei dem vorgeschlagenem Server. Hier drüber empfängt Dein Ubuntu Server alle Pakete, welche für die Installation von Programmen und Updates erforderlich sind.

Konfiguration des Ubuntu-Archiv-Mirrors
Konfiguration des Ubuntu-Archiv-Mirrors

Die Speicherplatzkonfiguration kannst Du lassen wie sie ist, da es sich um eine VM handelt und Du keine weiteren Partitionen benötigst.

Speicherplatzkonfiguration
Speicherplatzkonfiguration

Im Anschluss bekommst Du diese nochmal genauer dargestellt und bestätigst sie einfach.

Auflistung der Speicherplatzkonfiguration
Auflistung der Speicherplatzkonfiguration
Bestätigung der Speicherplatzkonfiguration und Installation
Bestätigung der Speicherplatzkonfiguration und Installation

Vergebe nun Deiner VM einen Namen als auch Nutzer mit Passwort. Hierbei kann ‘Ihr Name:’ Node1, ‘Name Ihres Servers:’ node1 und der Benutzername node1 lauten. Dies kannst Du dann mit den anderen VM auch machen. Node2, Node3 und Node4.

Profileinrichtung
Profileinrichtung

Um Dich später auch per SSH mit Deiner VM verbinden zu können, soll ebenfalls der OpenSSH-Server mit installiert werden.

SSH-Einrichtung
SSH-Einrichtung

Die weiteren Server-Snaps ignorierst Du, da Du später selbst die benötigten Programme wie Docker installieren wirst.

Server-Snaps
Server-Snaps

Jetzt heißt es warten, bis die Installation vollständig abgeschlossen ist und die VM neu gestartet werden kann.

Installation und Update
Installation und Update

Wenn Du ‘Jetzt neustarten’ sagst, musst Du ebenfalls die ISO-Datei unter Hardware entfernen.

3. Initial Setup

3.1 Update und Upgrade durchführen

Zurück in der Konsole einmal Enter drücken und Du bekommst die Möglichkeit, nach einem Neustart, Dich anzumelden. Im Anschluss führst Du die folgenden zwei Befehle aus und bestätigst die Durchführungen mit einem J oder Y für Ja / Yes.

sudo apt-get update
sudo apt-get upgrade

Nach dem Upgrade wird Dir Folgendes oder ein ähnlich aus sehendes Fenster angezeigt. Hier wähle einmal alle Dienste aus und bestätige dies mit OK. Somit werden alle Dienste einmal neu gestartet und das System ist auf dem neusten Stand.

Dienste neu starten
Dienste neu starten

3.2 IP-Adressen festlegen / vergeben

Jetzt ist der Zeitpunkt, an dem Du alle Deine VM herunterfahren und in Deinem Router feste IP-Adressen vergeben kannst. Dies dient am Ende einer leichteren Administration der Instanzen und der Kommunikation untereinander.

4. Docker installieren von Rancher

Installiere Docker für Rancher wie folgt auf Deinen Instanzen. Falls es hier ein neueres Skript gibt, schaue dafür bitte hier vorbei.

curl https://releases.rancher.com/install-docker/20.10.sh | sh

sudo docker --version
Docker Version
Docker Version

5. Rancher installieren

Installiere Rancher selbst nur auf einem Deiner Knoten, der Dein Hauptknoten / Master werden soll.

sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Nach der erfolgreichen Installation kannst Du Rancher unter der IP-Adresse von Deinem Knoten in Deinem Browser erreichen.

http://<IP-Adresse>

Wie Du der Ableitung entnehmen kannst, sollst Du zunächst ein docker ps ausführen, damit alle Deine aktuell laufenden Container mit angezeigt werden.

Im Anschluss daran sollst Du in den Logs des jeweiligen Containers nach dem Bootstrap Password suchen, welches bei der Installation des Containers generiert wurde. Kopiere dies mit einem einfachen rechts-Klick heraus und füge es im Feld Password ein. Klicke dann auf ‘Log in with Local User’.

sudo docker ps
sudo docker logs  container-id  2>&1 | grep "Bootstrap Password:"
Passwort holen und einloggen
Passwort holen und einloggen

Nach dem Login wurde dem Nutzer admin ein Passwort generiert. Dieses kannst Du Dir merken / speichern oder vergibst ein eigenes sicheres Passwort. Die Server URL entspricht der IP-Adresse Deiner aktuellen Instanz. Diese solltest Du nun auch nicht mehr ändern, da hier rüber die Kommunikation laufen wird. Zum Schluss musst Du noch die Bedingungen und Konditionen akzeptieren und kannst bei der anonymen Datenerhebung teilnehmen.

6. Kubernetes Cluster erstellen

Um Dein Cluster betreiben zu können, musst Du erst einmal eins erstellen. Dies machst Du mit einem Klick auf Create.

Erstelle ein Cluster
Erstelle ein Cluster

In Deiner Cluster-Auswahl wählst Du bitte Custom aus, um später Deine weiteren Knoten mit einbinden zu können.

Custom Cluster
Custom Cluster

Gebe im ersten Schritt Deinem Cluster einen Namen.

Namen vergeben
Namen vergeben

In den Kubernetes Optionen änderst Du nichts.

Kubernetes Options
Kubernetes Options

Auch den Reiter Private Registry lässt auf Disabled stehen.

Private Registry
Private Registry

In den Advanced Optionen deaktivierst Du die Nutzung von Nginx Ingress. Darum, weil in diesem Falle traefik genutzt werden soll. Traefik ist auch ein Proxy, welche allerdings leichter zu bedienen ist. Wobei das Ansichtssache ist.

Advanced Options
Advanced Options

Am Authorized Endpoint änderst Du nichts.

Authorized Endpoint
Authorized Endpoint

Nach dem alle Einstellungen vorgenommen wurden, klickst Du auf Next.

6.1 Master und Worker hinzufügen

Füge nun Master und Worker zu Deinem Cluster hinzu. Hier zu wählst Du für den Master folgende Einstellungen aus und kopierst den Code per SSH auf Deinen Master. Wie in der Meldung zu sehen, wird ein Knoten benötigt, welcher alle Rollen erfüllt, hierfür nutze ich den Master. Somit sind hier bei auch alle Checkboxen angehakt.

Der Command lädt den rancher-agent Container herunter und startet diesen mit den entsprechenden Flags. Somit sollte auf Deinem Master-Knoten sowohl der rancher- als auch der rancher-agent-Container laufen. Das hinzufügen des Agenten wird Dir auch, wie im Screenshot zu sehen, mit einer grünen Meldung bestätigt.

Master Konten erstellen
Master Konten erstellen

Dasselbe führst Du mit nur dem Worker angehakt für Deine Worker aus. Auch hier sollte inzwischen die Zahl neu registrierter Knoten in der grünen Benachrichtigung steigen.

Hast Du alle Master und Arbeiter Knoten registriert, dann kannst Du das alles mit einem Klick auf Done bestätigen.

7. Cluster einsehen

Wenn Du auf den Namen Deines so eben angelegtem Clusters klickst, gelangst Du in die Übersicht dessen.

Cluster Übersicht
Cluster Übersicht

Du wirst sehen, dass Deine einzelnen Maschinen / Instanzen / Knoten sich noch in der Registrierung befinden werden. Hierbei ist viel Zeit und Geduld mitzubringen, da dies sehr viel Zeit in Anspruch nehmen kann. Falls es dann doch mal länger als ca. 15 Minuten dauert, kann es auch helfen mal alle Instanzen herunter- und wieder hochzufahren.

Cluster Detailansicht
Cluster Detailansicht

Danach sollten aber mit der Zeit auch alle Knoten als Active angezeigt werden.

Alle Knoten sind aktiv.
Alle Knoten sind aktiv.

Fazit

Nun solltest Du in recht einfachen Schritten Dein eigenes Kubernetes Cluster auf Basis von Rancher und z. B. RKE aufgesetzt haben. Vielen Dank an Joe ‘JMcglock’ McLaughlin für den Beitrag, schaut auch gerne hier vorbei. Und für seinen entsprechenden Beitrag hier.

Titelbild von Proxmox, Rancher und Kubernetes