Was ist Kubernetes

Was ist Kubernetes

diesen Artikel gibt es auch auf englisch: What is Kubernetes?

k3nova by igneos.cloud

Kubernetes ist mehr als nur ein Buzzword – es ist das Rückgrat moderner Cloud-Infrastrukturen.

In diesem Blogartikel nehme ich dich mit auf eine spannende Reise: Gemeinsam bauen wir Schritt für Schritt einen eigenen Kubernetes-Cluster mit K3s auf – bestehend aus einer Control Plane (Master) und zwei Worker-Knoten.

Dabei lernst du nicht nur, was Kubernetes eigentlich ist und wie ein Cluster im Innersten funktioniert, sondern auch, welche Voraussetzungen du brauchst, um es selbst erfolgreich zu betreiben. Und weil Hochverfügbarkeit in produktiven Umgebungen entscheidend ist, zeige ich dir ebenfalls, was einen High Availability Cluster ausmacht – und worauf du achten musst, wenn du ihn wirklich stabil und sicher betreiben willst.

Zuerst führe ich dich durch die manuelle Installation – damit du ein tiees Verständnis für jeden einzelnen Schritt bekommst. Danach stelle ich dir den K3Nova vor: ein von mir entwickeltes Tool, das den Cluster-Aufbau automatisiert und dich mit klar strukturierten Anleitungen durch den Prozess begleitet.

Warum habe ich K3Nova entwickelt?
Die Welt von Kubernetes und Cloud-Native-Technologien ist faszinierend – aber der Einstieg ist oft steinig. Komplexe Architektur, unzählige YAML-Dateien, verwirrende CLI-Befehle und ein scheinbar endloser Dschungel an Tools und Konzepten. Gerade als Softwareentwickler:in will man doch einfach loslegen: Anwendungen entwickeln, testen, iterieren. Doch bevor es überhaupt so weit ist, steht häufig ein Berg an Infrastrukturarbeit im Weg.

Genau hier setzt K3Nova an:
Ich habe K3Nova entwickelt, weil ich überzeugt bin, dass der Zugang zu Kubernetes deutlich einfacher sein muss – vor allem für Entwickler:innen, die nicht gleich zum Kubernetes-Administrator werden wollen, sondern einfach eine produktionsnahe Umgebung zum Ausprobieren und Entwickeln brauchen.

Mit K3Nova verfolge ich drei zentrale Ziele:

  1. Barrieren abbauen
    Ich möchte dir den Einstieg in die Cloud-Native- und Kubernetes-Welt so leicht wie möglich machen – egal, ob du gerade erst anfängst oder dein Wissen vertiefen willst.

  2. Verständnis fördern
    Durch einen geführten, strukturierten Setup-Prozess lernst du, wie ein Kubernetes-Cluster funktioniert – von der Control Plane über Worker Nodes bis hin zu Themen wie Ingress, Registry, NFS und Monitoring. So bekommst du schnell ein besseres Gefühl für die Konzepte hinter Kubernetes, ohne dich in der Komplexität zu verlieren.

  3. Schnell startklar sein
    Mit wenigen Klicks oder einem einfachen Befehl kannst du dir lokal eine vollständige, realitätsnahe Kubernetes-Umgebung aufsetzen – ohne manuelle Konfigurationsarbeit, ohne zeitraubende Recherche. Du kannst direkt mit dem entwickeln beginnen – genau dafür ist K3Nova gemacht.

So kannst du dich voll auf das konzentrieren, was dir wichtig ist: die Entwicklung moderner Anwendungen.

K3Nova ist nicht einfach nur ein weiteres Tool in der endlosen Liste von Kubernetes-Werkzeugen.
Es ist aus der Praxis heraus entstanden – aus Frustration über unnötige Komplexität und aus dem Wunsch, Dinge einfacher, verständlicher und zugänglicher zu machen. K3Nova richtet sich an alle, die Kubernetes wirklich verstehen und nutzen wollen, ohne sich durch unzählige Hürden kämpfen zu müssen.

Es ist mein persönlicher Versuch, eine Brücke zu schlagen: Zwischen Theorie und Praxis, zwischen Komplexität und Klarheit, zwischen Infrastruktur und Entwicklung.
Wenn du neugierig bist, wie ein Kubernetes-Cluster aufgebaut ist, wie du ihn lokal selbst betreiben kannst und dabei gleichzeitig ein Gespür für Cloud-Native Architekturen entwickeln willst – dann ist K3Nova genau für dich gedacht.

Mein Ziel ist es, dir nicht einfach nur Wissen zu vermitteln – ich möchte dich für Kubernetes begeistern und dir zeigen, wie viel Freude es macht, eine eigene Infrastruktur aufzubauen, zu verstehen und zu beherrschen.

K3Nove

 

Warum ist Kubernetes in der Cloud-Native-Welt so wichtig ist?
Kubernetes (K8s) ist das Betriebssystem der modernen Cloud. Es orchestriert deine Container, automatisiert Deployments, skaliert deine Anwendungen bei Bedarf – und sorgt dafür, dass alles stabil läuft, selbst wenn einzelne Teile ausfallen.

In einer Welt, in der Software ständig schneller, verteilter und dynamischer wird, bietet Kubernetes genau das, was du brauchst: Selbstheilung, Skalierbarkeit, Portabilität – und das Ganze plattformunabhängig, ob in der Cloud oder On-Premises.

Cloud-Native bedeutet: flexibel, robust, automatisiert – und Kubernetes ist das Fundament dafür. Es macht dich unabhängig von Cloud-Anbietern, gibt dir die volle Kontrolle über deine Infrastruktur und öffnet die Tür zu einem riesigen Ökosystem moderner Tools wie Prometheus, Helm oder GitOps.

Jetzt geht loos!

1. Voraussetzungen

  1. Drei Ubuntu-Server (VMs oder physisch) mit Ubuntu Server und Root-Rechten
  2. SSH-Zugang zu allen Hosts (Passwort oder SSH-Key)
  3. Lokaler Rechner mit installiertem Git

1.2. Ubuntu Server mit SSH-Server einrichten

1.2.1 Voraussetzungen

  • Ubuntu 20.04, 22.04 oder neuer (Server oder Desktop)
  • Root-Zugang oder ein Benutzer mit sudo-Rechten

1.2.2 OpenSSH-Server installieren

sudo apt update

sudo apt install openssh-server -y

1.2.3 Überprüfen, ob der SSH-Dienst läuft

sudo systemctl status ssh

Du solltest eine Ausgabe sehen wie:

● ssh.service - OpenBSD Secure Shell server

   Active: active (running)

Falls nicht:

sudo systemctl enable --now ssh

1.2.4 IP-Adresse des Servers ermitteln

Damit du dich später verbinden kannst:

ip a

Oder:

hostname -I

Notiere dir die IP-Adresse des Netzwerkschnittstelle z. B. 192.168.1.100

1.2.5 SSH-Server sicher konfigurieren (optional, aber empfohlen)

Die Konfigurationsdatei liegt unter:

sudo nano /etc/ssh/sshd_config

Hier ein sicherer Basissatz an Einstellungen:

PermitRootLogin no

PasswordAuthentication no

PermitEmptyPasswords no

ChallengeResponseAuthentication no

UsePAM yes

X11Forwarding no

AllowUsers andrej

💡 Wichtig: Nur PasswordAuthentication no setzen, wenn Public-Key-Login funktioniert, sonst sperrst du dich aus.

Änderungen übernehmen:

sudo systemctl reload ssh

1.2.6 Firewall konfigurieren (UFW – falls aktiv)

sudo ufw allow OpenSSH

sudo ufw enable

🔒 Das erlaubt eingehende Verbindungen auf Port 22 (Standard für SSH).

1.2.7 Verbindung testen

Auf deinem lokalen Rechner (Linux, macOS oder Git-Bash / PuTTY unter Windows):

ssh kubernete@192.168.1.100

Wenn alles richtig eingerichtet ist, solltest du direkt verbunden werden – entweder über Passwort oder über den SSH-Key.

1.2.8 Bonus: Port ändern (für Sicherheit durch Verschleierung)

Ändere in /etc/ssh/sshd_config:

Port 2222

Dann:

sudo ufw allow 2222/tcp

sudo systemctl restart ssh

Und künftig so verbinden:

ssh -p 2222 andrej@192.168.1.100

1.2.9 Tipps zur Sicherheit

Maßnahme Beschreibung
Root-Login deaktivieren PermitRootLogin no
Nur bestimmte User zulassen AllowUsers oder AllowGroups
Fail2Ban installieren Schutz vor Brute-Force-Angriffen (sudo apt install fail2ban)
SSH-Key statt Passwort Höhere Sicherheit durch kryptografische Authentifizierung
Firewall einrichten Nur notwendige Ports öffnen

1.3. Repository klonen und Umgebung vorbereiten

Bevor wir mit der Installation beginnen können, müssen wir das K3Nova-Repository klonen. Dieses enthält die vorkompilierte Binary sowie alle notwendigen Konfigurationsdateien, die für die Einrichtung des Clusters erforderlich sind.

Führe dazu die folgenden Befehle aus:

# Klone das k3s_installation-Repository

git clone https://github.com/AndrejSchefer/K3Nova.git

cd K3Nova

Im Verzeichnis K3Nova findest du:

  • die K3Nova-Binaries, mit der du die Cluster-Installation über die Kommandozeile steuern kannst.
  • Die vorbereitete Konfigurationsdateien (z. B. config/k3nova-config.json.tpl), mit denen du das Setup deines Clusters individuell anpassen kannst

1.4. Konfiguration anpassen

Erstelle aus der Vorlage config/k3nova-config.json.tpl eine Datei config/k3nove-config.json und trage die Zugangsdaten für einen Master und zwei Worker ein. Beispiel:

{
  "masters": [
    {
      "ip": "192.168.56.10",        # Master node IP address
      "ssh_user": "ubuntu",         # SSH user for master
      "ssh_pass": "yourpassword",    # SSH password for master
      "cluster_init": false
    }
  ],
  "workers": [
    {
      "ip": "192.168.56.11",         # Worker node 1 IP address
      "ssh_user": "ubuntu",          # SSH user for worker
      "ssh_pass": "yourpassword",    # SSH password for worker
      "cluster_init": false
    },
    {
      "ip": "192.168.56.12",        # Worker node 2 IP address
      "ssh_user": "ubuntu",         # SSH user for worker
      "ssh_pass": "yourpassword",    # SSH password for worker
      "cluster_init": false
    }
  ],
  "k3s_token_file": "master-node-token",  # Path to token file
  "docker_registry": {
    "url": "registry.local",
    "pvc_storagy_capacity": "10Gi",
    "pass": "123456",
    "user": "registry",
    "local": true
  },
  "redis": {
    "url": "redis.local",
    "pvc_storage_capacity": "10Gi",
    "pass": "123456",
    "user": "registry",
    "image": "redis:8.0.2",
    "local": true
  },
  "nfs": {
    "network_CIDR": "192.168.179.0/24",
    "nfs_server": "192.168.179.12",
    "nfs_user": "kubernetes",
    "nfs_pass": "123456",
    "server": "10.0.0.10",
    "export": "/mnt/k3s-nfs-localstorage",
    "capacity": "100Gi"
    },
    "email": "public@andrejschefer.de",
    "domain": "igneos.cloud",
    "cluster_issuer_name": "letsencrypt-prod"
}

2. Installiere eine Control-Plane und zwei worker

Nachdem du das Repository erfolgreich geklont hast, kannst du nun die K3Nova-Binary für dein Betriebssystem ausführbar machen und starten. Im folgenden Beispiel zeigen wir, wie du die Linux-Version (k3nova-linux-amd64) einrichtest:

# Am Beispiel Linux

mv k3nova-linux-amd64 k3nova 

chmod +x k3nova

./k3nova
  • Zuerst wird die heruntergeladene Binary umbenannt, um sie einfacher per Befehl auszuführen (mv).
  • Anschließend wird die Datei mit chmod +x ausführbar gemacht.
  • Mit ./k3nova startest du das Tool direkt im Terminal.

Nach dem Start führt dich K3Nova interaktiv oder konfigurationsbasiert durch die Clusterinstallation. Stelle sicher, dass die zugehörige config/k3nova-config.json im selben Verzeichnis liegt – sie definiert, wie der Cluster aufgebaut werden soll (z. B. Control Planes, Worker, NFS, Registry, Monitoring etc.).

2.1 Installiere K3s Master (Control Plane)

Im K3s-Cluster übernimmt der „Control Plane“ (technisch korrekter als „Server-Knoten“) die entscheidende Rolle der Steuerung und Verwaltung des gesamten Clusters. K3s ist eine leichtgewichtige Kubernetes-Distribution, die darauf abzielt, die Komplexität zu reduzieren, aber die Kernfunktionen von Kubernetes beibehält.

Was ist der K3s Master (Server-Knoten)?

Der K3s Control-Plane ist der Knoten, der die Kubernetes-Steuerungsebene (Control Plane) ausführt. Im Gegensatz zu einer vollwertigen Kubernetes-Installation, bei der die Komponenten der Steuerungsebene oft auf separaten Maschinen laufen, fasst K3s diese in einer einzigen Binärdatei zusammen.

Der K3s Control Plane-Knoten ist das „Gehirn“ des K3s-Clusters. Er ist verantwortlich für:

  • Die Bereitstellung der Kubernetes API.
  • Das Speichern des Cluster-Zustands.
  • Das Planen von Workloads auf verfügbaren Knoten.
  • Das Sicherstellen, dass die gewünschten Zustände der Ressourcen im Cluster aufrechterhalten werden.

Ohne den Control-Plane-Knoten kann der K3s-Cluster keine neuen Workloads planen oder den Zustand des Clusters verwalten. In Hochverfügbarkeits-Setups (HA-Cluster) gibt es mehrere Server-Knoten, um Redundanz zu gewährleisten und einen Single Point of Failure zu vermeiden. (mehr in Abschnitt 3)

2.1.1 Manuelle Installation der K3s Control Plane (Single-Node)

Auf dem ersten Master-Node (192.168.56.10) installieren wir K3s in der Rolle einer eigenständigen Control Plane. Dafür verwenden wir das offizielle Installationsskript von K3s und geben dabei gezielt Parameter mit, um die Sicherheit und Nutzbarkeit der Umgebung zu erhöhen:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--write-kubeconfig-mode=644 --secrets-encryption" sh -s - server    

Wichtige Parameter im obigen Befehl:

  • --write-kubeconfig-mode=644 erlaubt nicht-root Nutzern auf dem Master, die erzeugte kubeconfig (/etc/rancher/k3s/k3s.yaml) zu lesen. So können Sie später als normaler Benutzer mit kubectl arbeiten, ohne Root-Rechte.
  • --secrets-encryption aktiviert die Verschlüsselung von Kubernetes-Secrets (in etcd/SQLite) auf dem Server. k3s generiert dabei automatisch einen AES-Schlüssel und ein Encryption-Config, das dem API-Server übergeben wird (Secrets Encryption | K3s). Diese Einstellung sorgt dafür, dass vertrauliche Daten (Secrets) auch im etcd-Storage verschlüsselt vorliegen.

2.1.2 Alternative: K3s-Master-Installation mit dem K3Nova

Anstatt die K3s-Control-Plane manuell mit dem offiziellen Skript zu installieren, kann die Einrichtung auch vollständig automatisiert über das CLI-Tool K3Nova erfolgen. Dieses Tool wurde entwickelt, um sowohl einfache als auch hochverfügbare K3s-Cluster schnell, reproduzierbar und sicher zu installieren.

Um einen K3s Master-Node auf 192.168.56.10 zu installieren und gleichzeitig die kube-config auf Ihrem lokalen Rechner (/home/user/.kube/config) für den sofortigen kubectl-Zugriff einzurichten, wähle bitte den Menüpunkt „Install Kubernetes Master“ in K3Nova. Der K3Nova führt automatisch die Befehle aus die du manuell oben ausgeführt hast

2.1.2.1 Installationsablauf

Nach dem Start des Installers mit:

./K3Nova

öffnet sich ein interaktives Terminalmenü. Dort kannst du auswählen, ob du:

  • einen einzelnen Master installieren möchtest
  • einen vollständigen Cluster mit Master-, Worker-, Monitoring-, Registry- und Storage-Komponenten aufsetzen willst
  • oder ein hochverfügbares K3s-Cluster mit mehreren Control-Plane-Knoten konfigurieren möcht est

Sobald du im Tool die Option „Install Kubernetes Master“ auswählst, startet K3Nova automatisch den Installationsprozess. Dabei wird eine sichere SSH-Verbindung zum Zielserver aufgebaut, über die alle erforderlichen Befehle remote ausgeführt werden.

Im Hintergrund verwendet K3Nova nahezu denselben Befehl wie bei einer manuellen K3s-Installation – mit einem entscheidenden Unterschied: Statt des standardmäßig mitgelieferten Traefik-Ingress-Controllers richtet K3Nova eine erweiterte Traefik-Variante ein, die sowohl TCP- als auch UDP-Ingress unterstützt. Aus diesem Grund wird Traefik zunächst über den Parameter --disable=traefik deaktiviert:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--write-kubeconfig-mode=644 --secrets-encryption --disable=traefik" sh -s - server

Diese Konfiguration sorgt dafür, dass die erzeugte kubeconfig für nicht-root-Nutzer lesbar ist und dass Secrets im Cluster verschlüsselt gespeichert werden.

2.1.2.2 Was bedeutet „Advanced Traefik“ in K3Nova?

Standardmäßig installiert K3s beim Setup automatisch eine einfache Traefik-Konfiguration als Ingress-Controller. Diese reicht für viele Webanwendungen aus, ist jedoch auf HTTP(S)-Ingress beschränkt. Sobald man Dienste wie Redis, PostgreSQL, MQTT oder andere Protokolle auf TCP/UDP-Basis absichern oder veröffentlichen möchte, stößt diese Standardinstallation an ihre Grenzen.

K3Nova geht hier bewusst einen Schritt weiter – und setzt auf eine erweiterte („advanced“) Traefik-Installation, die folgende Vorteile bietet:

2.1.2.3 Nach der Installation

Sobald die K3s-Installation abgeschlossen ist, lädt K3Nova automatisch die erzeugte kubeconfig vom Server herunter und speichert sie lokal ab. Der Pfad sieht dabei typischerweise so aus:

~/.kube/config

Du kannst diese Datei direkt mit kubectl verwenden oder als KUBECONFIG-Umgebungsvariable setzen, um gegen den neuen Cluster zu arbeiten.

Beispiel:

kubectl get nodes
2.1.2.4 Vorteile gegenüber der manuellen Methode

Im Vergleich zur manuellen Installation bietet der K3Nova folgende Vorteile:

  • Erhebliche Zeitersparnis durch Automatisierung
  • Konsistente Konfiguration über alle Knoten hinweg
  • Sichere Speicherung der kubeconfig auf dem lokalen Rechner
  • Möglichkeit, den Cluster schrittweise oder vollständig aufzubauen
  • Optionale Zusatzmodule wie Monitoring oder Redis sofort verfügbar
  • Reduzierte Fehleranfälligkeit durch geprüfte Installationslogik

2.2 Installiere K3s-Agent (Worker)

Im K3s-Ökosystem übernimmt der Agent die Rolle des Ausführungs-“Workers” im Cluster. Er verbindet sich mit dem k3s-Server (oft fälschlich „Master“ genannt), lädt Pods und Services herunter und führt sie aus. Im Folgenden die wesentlichen Punkte:

Ein K3s-Agent ist ein Prozess, der auf jedem Worker-Node läuft und folgende Kern­komponenten von Kubernetes beherbergt:

  • kubelet: Hält die Pods am Laufen, meldet Status ans Control Plane.
  • kube-proxy: Setzt die Kubernetes-Netzwerkregeln auf Node-Ebene um.
  • Container Runtime: Standardmäßig containerd, führt Container aus.

Der Agent registriert den Node beim Server, überwacht die Node-Gesundheit und führt alle ihm zugewiesenen Workloads aus.

Hauptaufgaben des K3s-Agent

  1. Node-RegistrationBaut beim Start eine sichere Verbindung zum Server auf (via TLS) und registriert sich mit Token oder Zertifikat.
  2. Pod-ManagementDer kubelet-Prozess auf dem Agent empfängt Pod-Definitionen vom API-Server und startet bzw. verwaltet die zugehörigen Container.
  3. Netzwerkvermittlungkube-proxy sorgt für Service-IP-Routing und Lastverteilung auf dem Node.
  4. Health-ChecksFührt Liveness- und Readiness-Probes durch und meldet Status zurück.
  5. Log- und Metrik-SammlungLeitet Logs und Node-Metriken ggf. an Monitoring-Komponenten weiter.
2.2.1 Manuelle Installation eines K3s-Agents

Führe auf dem Worker-Server (192.168.56.11) das k3s-Installationsscript so aus, dass es sich mit dem Master verbindet:

Zunächst benötigen wir das Cluster-Token zur Authentifizierung.

Dieses findest du nach Master-Installation in /var/lib/rancher/k3s/server/node-token auf dem Master. Kopiere den Inhalt dieses Tokens sicher (z.B. per SSH):

# Auf dem Master Node (192.168.56.10): Token auslesen
cat /var/lib/rancher/k3s/server/node-token
# Beispielausgabe (nicht real verwenden):
K1066b9f4e97c2e87ea47d6facf56e76828e62198e1f908d58e29cce355956f9c::server:37c672b9c9d3f9f4dce7f297bef856d1

Führe nun auf dem Worker folgendes aus (ersetzen Sie <MASTER_IP> durch 192.168.56.10 und <TOKEN> durch den kopierten Token-String):

# Auf dem Worker-Node ausführen (Master-IP und Token einsetzen):
curl -sfL https://get.k3s.io | K3S_URL="https://<MASTER_IP>:6443" K3S_TOKEN="<TOKEN>" sh -s - agent

Dieser Befehl installiert k3s im Agent-Modus und verbindet den Node zum Master-API-Server auf Port 6443 mittels des Tokens. Wenn die Installation abgeschlossen ist, prüfe auf dem Master erneut die Nodes

# Zurück auf dem Master (mit gesetztem KUBECONFIG):

kubectl get nodes -o wide

Du solltest nun zwei Nodes gelistet sehen – den Master (192.168.56.10) mit Role control-plane und den Worker (192.168.56.11) als agent – beide mit STATUS „Ready“. Damit ist der Basis-Cluster eingerichtet.

DIESEN PROZESS MUSST DU AUF JEDEM SERVER DURCHFÜHREN

2.2.2 Installiere K3s-Agents mit K3Nova

Alternativ kannst du den Prozess über den K3Nova abwickeln. Dieser ruft den benötigten Token vom Master ab und richtet die K3s-Agents auf jeder einzelnen VM automatisch ein.

2.3 Unterschiede zum K3s Server („Control Plane“)

Merkmal k3s Server k3s Agent
Control Plane Enthält API-Server, Scheduler, Controller Manager und Backend (SQLite oder externes DB) Nur execution plane (kubelet, kube-proxy)
State Store Persistiert Cluster-Zustand Kein Local Store
API-Endpoint Stellt API-Endpoint unter Port 6443 bereit Konsumiert API über Agent-Verbindung
Cluster-Init Führt k3s server initial aus Führt k3s agent zum Joinen aus
Rollen Control Plane & optional auch Workloads Nur Worker, keine Control Plane

2.3.1 Zusammenfassung

  • k3s Server („Master“) stellt das Control Plane und den API-Endpoint bereit, speichert den Cluster-Zustand und verwaltet Scheduling und Controller.
  • k3s Agent sind die Worker-Nodes, die kubelet, kube-proxy und Container Runtime betreiben, um Pods auszuführen und Netzwerk-Routing zu übernehmen.
  • Die Trennung erlaubt Skalierung: Mehr Agenten für mehr Workloads Was ist ein Workloads?, während der Server die zentrale Steuerung übernimmt.

Mit dieser Aufteilung bleibt k3s leichtgewichtig und besonders für Edge- und IoT-Szenarien geeignet.

3 High-Availability-Setups (HA-Cluster)

Ein Hochverfügbarkeits-Setup (HA-Cluster) erhöht die Ausfallsicherheit deines Kubernetes-Clusters, indem mehrere Master-Knoten parallel betrieben werden. Fällt ein Master aus, übernehmen die anderen Master-Knoten automatisch die Steuerung und Verwaltung des Clusters. So vermeidest du einen Single Point of Failure. Ein typisches HA-Setup besteht aus mindestens drei Master-Knoten, um Quorum-Entscheidungen treffen zu können und den Clusterzustand zuverlässig zu sichern.

3.1 Installation des K3s-Clusters im High-Availability (HA)-Setup

Ein High-Availability-Cluster sorgt für eine hohe Verfügbarkeit und Ausfallsicherheit deines Kubernetes-Clusters. Für unser Beispiel verwenden wir ein Setup mit drei Master-Nodes (Control Plane) und einem integrierten etcd-Cluster zur Verwaltung und Synchronisierung der Kubernetes-Datenbank.

Unsere Server haben folgende IP-Adressen:

  • Master-Node 1: 192.168.56.10
  • Master-Node 2: 192.168.56.11
  • Master-Node 3: 192.168.56.14

3.1.1 Manuelle Installation des HA-Setup mit eigener etcd-Datenbank:

3.1.1.2 Erster Master-Node (Control Plane)

Auf dem ersten Master-Node (192.168.56.10) installieren wir K3s und initialisieren damit den Cluster. Dieser Schritt startet den ersten Control-Plane-Knoten mit einer eingebetteten etcd-Datenbank und bildet somit das Fundament für ein hochverfügbares Setup.

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --cluster-init --write-kubeconfig-mode=644 --secrets-encryption" sh -

Wichtige Parameter im obigen Befehl:

  • --cluster-initDieser Parameter initialisiert den etcd-Cluster, also die zentrale Datenbank des Kubernetes-Clusters. Der Node, auf dem dieser Befehl ausgeführt wird, wird dadurch zum ersten Mitglied der etcd-Cluster-Replikation und übernimmt die Rolle eines Leaders (bis eventuell eine Replikation erfolgt).In einem HA-Setup mit mehreren Control-Plane-Knoten bildet etcd das Rückgrat der Cluster-Konsistenz: alle Steuerungsdaten wie Deployments, Pods, Secrets, ConfigMaps oder Cluster-Zustände werden hier gespeichert.
  • --write-kubeconfig-mode=644Dieser Parameter sorgt dafür, dass die generierte Konfigurationsdatei (/etc/rancher/k3s/k3s.yaml) mit den Dateiberechtigungen 644 gespeichert wird. Damit ist sichergestellt, dass nicht-root Benutzer die Datei lesen können und somit kubectl verwenden können, ohne Root-Rechte zu benötigen.
  • --secrets-encryptionMit diesem Parameter wird die Verschlüsselung sensibler Kubernetes-Daten (z. B. Secrets) in der etcd-Datenbank aktiviert.K3s erzeugt dabei automatisch einen AES-Schlüssel und eine passende encryption-config.yaml, die dem API-Server übergeben wird. Dadurch wird sichergestellt, dass z. B. Passwörter, Tokens oder Zertifikate, die als Secrets gespeichert werden, nicht im Klartext in der Datenbank landen.

Hinweis: Dieser Node wird der erste von mindestens drei Control-Plane-Knoten in einem hochverfügbaren etcd-Cluster. Alle weiteren Control-Plane-Nodes werden sich später mit diesem initialisierten Cluster verbinden.

3.1.1.2 Weitere Master-Nodes zum Cluster hinzufügen

Nachdem der erste Master-Node erfolgreich mit etcd initialisiert wurde, können die beiden weiteren Control-Plane-Nodes dem bestehenden Cluster beitreten. Dafür benötigst du den Token des ersten Masters, der sich auf folgendem Pfad befindet:

Token auf dem ersten Master-Node (192.168.56.10) anzeigen:

sudo cat /var/lib/rancher/k3s/server/token

Kopiere diesen Token – er wird gleich benötigt, um die neuen Master-Nodes korrekt anzubinden.

Installation auf den weiteren Master-Nodes (z. B. 192.168.56.11 und 192.168.56.12):
Führe nun den folgenden Befehl auf den beiden zusätzlichen Nodes aus. Wichtig: Den Parameter --cluster-init darfst du nur beim ersten Master verwenden – auf allen weiteren wird er weggelassen!

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server \
  --server https://192.168.56.10:6443 \
  --token <TOKEN> \
  --write-kubeconfig-mode=644 \
  --secrets-encryption" sh -

Ersetze <TOKEN> durch den zuvor kopierten Wert.

Erklärung der wichtigsten Parameter:

Parameter Beschreibung
--server https://192.168.56.10:6443 Gibt die Adresse des initialen Master-Nodes an, mit dem sich der neue Node verbindet.
--token <TOKEN> Authentifiziert den neuen Node gegenüber dem bestehenden Cluster.
--write-kubeconfig-mode=644 Erlaubt auch Nicht-Root-Benutzern den Zugriff auf die kubeconfig.
--secrets-encryption Aktiviert die Verschlüsselung von Kubernetes-Secrets (z. B. in etcd), genau wie beim ersten Master.

Sobald alle drei Master-Nodes korrekt beigetreten sind, ist dein hochverfügbarer K3s-Control-Plane-Cluster vollständig ein

3.1.1.3 Abschluss der Installation

Nach der erfolgreichen Installation kannst du den Cluster-Status mit folgendem Befehl prüfen:

kubectl get nodes

Alle drei Master-Nodes sollten im Status Ready erscheinen. Durch dieses HA-Setup stellst du sicher, dass dein Kubernetes-Cluster selbst beim Ausfall einzelner Nodes weiterhin verfügbar bleibt.

Nun kannst du wie im Abschnitt 2.2 zusätzliche K3s-Agents für dein HA-Cluster installieren.

3.2 Alternative: Hochverfügbaren K3s-Cluster mit drei Control-Plane-Knoten automatisiert einrichten – mit K3Nova

Die manuelle Einrichtung eines hochverfügbaren (HA) K3s-Clusters mit mehreren Control-Plane-Knoten ist nicht nur zeitaufwendig, sondern auch fehleranfällig. Für jede Control-Plane müssen spezifische Konfigurationsschritte beachtet werden – angefangen bei der Initialisierung des etcd-Clusters über das Setzen von Umgebungsvariablen bis hin zur Netzwerkkommunikation zwischen den Knoten.

Um dir diesen Aufwand zu ersparen, kannst du K3Nova verwenden. Mit nur wenigen Eingaben installiert der Installer:

  • ab drei vollständig konfigurierte Control-Plane-Knoten,
  • einen intern replizierten etcd-Verbund (zur Absicherung gegen Datenverlust und Ausfälle),
  • eine konsistente Cluster-Topologie, die sofort bereit für den produktiven Betrieb ist.

Das Tool übernimmt dabei nicht nur die Initialisierung des Clusters, sondern sorgt auch dafür, dass alle Control-Planes korrekt miteinander verbunden sind, sich gegenseitig kennen und ein funktionierender Leader im etcd-Verbund gewählt wird.

Vorteile auf einen Blick:

  • Kein manuelles Setup von etcd oder cluster-init
  • Einheitliche Konfiguration aller Knoten
  • Minimierung von Fehlerquellen
  • Zeitersparnis und erhöhte Reproduzierbarkeit

3.2.1 Konfiguration Datei

Um einen hochverfügbaren K3s-Cluster mit mehreren Control-Plane-Knoten aufzusetzen, musst du mindestens drei Nodes in die Datei config/k3nova-config.json eintragen.

Wichtig dabei: Setze beim ersten Node im Feld cluster_init den Wert auf true. Dadurch wird bei diesem Knoten die K3s-Installation mit dem Parameter --cluster-init durchgeführt, was zur Initialisierung des internen etcd-Clusters führt.

Alle weiteren Control-Plane-Nodes müssen mit cluster_init: false gekennzeichnet werden – sie treten dem Cluster bei, nachdem der erste Node erfolgreich initialisiert wurde.

Beispielkonfiguration (config/k3nova-config.json):

{
  "control_planes": [
    {
        "ip": "192.168.179.10",
        "ssh_user": "kubernetes",
        "ssh_pass": "123456",
        cluster_init": true          # set true for insta
    },
    {
        "ip": "192.168.179.11",
        "ssh_user": "kubernetes",
        "ssh_pass": "123456",
        "cluster_init": false
    },
    {
        "ip": "192.168.179.14",
        "ssh_user": "kubernetes",
        "ssh_pass": "123456",
        "cluster_init": false
    }
],
  "workers": [
    {
      "ip": "192.168.56.11",        
      "ssh_user": "kubernetes",         
      "ssh_pass": "123456",
      "cluster_init": false
    },
    {
      "ip": "192.168.56.12",       
      "ssh_user": "ubuntu",        
      "ssh_pass": "yourpassword",  
      "cluster_init": false
    }
  ],
}
  • Das Feld cluster_init: true darf nur bei einem einzigen Control-Plane-Knoten gesetzt werden – und zwar bei dem, der den etcd-Cluster startet.
  • Der Installer nutzt diese Datei, um automatisch via SSH alle Nodes korrekt zu konfigurieren und den Cluster aufzubauen.
  • Die ssh_user und ssh_pass Felder müssen auf allen Hosts gültig sein und ausreichende Berechtigungen für administrative Tasks haben.

Starte K3Nova und wähle den Punkt „Install High Availability Kubernetes Masters“ aus

 

3.2.2 Abschluss der Installation

Nach der erfolgreichen Installation kannst du den Cluster-Status mit folgendem Befehl prüfen:

kubectl get nodes

Alle drei Master-Nodes sollten im Status Ready erscheinen. Durch dieses HA-Setup stellst du sicher, dass dein Kubernetes-Cluster selbst beim Ausfall einzelner Nodes weiterhin verfügbar bleibt.

Nun kannst du wie im Abschnitt 2.2 zusätzliche K3s-Agents für dein HA-Cluster installieren.

Schreibe einen Kommentar

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