How to: Kubernetes Cluster erstellen

Wir zeigen Ihnen, wie Sie Ihre Kubernetes Cluster bei uns erstellen können und was Sie dabei beachten müssen.

Dieser Dienst befindet sich derzeit im Early Access. Kontaktieren Sie uns, um Zugang zu beantragen.

Zunächst benötigen Sie einen Xelon HQ Account. Wenn Sie noch keinen Account haben, können Sie sich an unser Sales-Team wenden, das Ihnen einen Account kreieren und das Onboarding vereinfachen kann. Sobald Sie einen Account haben und eingeloggt sind, können Sie diesen Anweisungen folgen.

Grundlegende Informationen

Navigieren Sie in der seitlichen Übersichtsleiste zu "Kubernetes" und klicken Sie auf "Create Cluster". Unser Erstellungsassistent ist in drei Abschnitte unterteilt, die unten aufgelistet sind.

Basics

Anschliessend öffnet sich der Erstellungsassistent, der alle notwendigen Informationen abfragt.

Create_Cluster_Basics

  1. Cluster Name: Dieser Name ist ein Anzeigename, der die Wiedererkennung des Clusters erleichtert.
  2. Select Tenant: Mit dieser Option können Sie als Reseller ein Cluster für eine Endkundin oder einen Endkunden bereitstellen.
  3. Select Cloud: Standardmässig laufen alle Nodes eines Kubernetes Clusters in einer dedizierten Cloud, Sie können jedoch auswählen, welche Cloud verwendet werden soll.
  4. Talos Version: Talos ist das Betriebssystem, das wir für den Betrieb unseres Dienstes verwenden, wählen Sie hier die gewünschte Version aus.
  5. Kubernetes-Version: Kubernetes ist die Software zur Orchestrierung von Containern, Details zu den aktuellen Versionen finden sich auf der  offiziellen Website.

Grundsätzlich sind neuere Kubernetes-Versionen besser. Achtung: Kubernetes verwendet das Semantic-Versioning-Format, aber auch Minor Patches enthalten inkompatible API-Anpassungen.

Network Settings

Die Cluster-Netzwerkeinstellungen regeln den Zugriff auf das Cluster sowie die IP-Verteilung und DNS-Einstellungen im Cluster.

Create_Cluster_NetworkSettings

  1. Kubernetes API allowed IPs: Diese Liste von IP-Adressen und Netzwerken erlaubt den externen Zugriff auf die KubeAPI, diese Regel wird von den Load Balancern durchgesetzt. Die KubeAPI wird zur Konfiguration und Verwaltung des Workloads auf dem Kubernetes-Cluster verwendet.
  2. Talos API allowed IPs: Diese Liste von IP-Adressen und Netzwerken erlaubt den externen Zugriff auf die TalosAPI, diese Regel wird von Load Balancern durchgesetzt. Die TalosAPI wird verwendet, um die Konfiguration des Betriebssystems der Nodes zu manipulieren.
  3. Cluster Domain: Kubernetes verwendet intern DNS-Auflösung, um auf Services und Container zu verweisen, alle Services und Container haben einen eigenen "fully Qualified Domain Name", der auf die Cluster Domain endet.
  4. Pod Subnet: Derzeit ist dies noch nicht manipulierbar, wir verwenden standardmässig ein Netzwerk aus dem CGNAT-Bereich, welches im Internet nicht geroutet wird. Erfahren Sie mehr darüber im RFC 6598.
  5. Service Subnet: Aktuell ist dieses noch nicht manipulierbar, wir verwenden standardmässig ein Netzwerk aus dem CGNAT-Bereich, das nicht über das Internet geroutet wird. Mehr dazu in RFC 6598.

Bonus-Tipp: Wenn keine IPs zu den IP-Listen in Punkt 1 & 2 hinzugefügt werden, sind alle erlaubt. Um dies zu verhindern, können Sie eine gefälschte Localhost-Adresse hinzufügen, z.B.: "127.0.0.127".

Pools und Nodes

Pools sind eine logische Abstraktion, um eine vordefinierte Grösse für die virtuellen Maschinen zu haben. Nodes hingegen sind die virtuellen Maschinen selbst. Generell kann man selbst entscheiden, wie viele Ressourcen man den virtuellen Maschinen zur Verfügung stellen möchte.Create_Cluster_PoolsAndNodes

  1. Primary Load Balancer: Das Primary Load Balancer Cluster wird verwendet, um Kubernetes-Services vom Typ "Load Balancer", den Standard Ingress Controller sowie die KubeAPI und TalosAPI zu veröffentlichen. Ausserdem wird er als Gateway für die Kubernetes Nodes selbst verwendet. Der Produktivmodus skaliert die Anzahl der Load Balancer Nodes von einer auf zwei Nodes, was die Fehlertoleranz durch Failover-Mechanismen erhöht.

  2. 0_ControlPlane: Die Zahl am Anfang des Poolnamens ist die Pool-Index-Nummer. Dieser Pool ist der ControlPlane-Pool, der das Gehirn (ETCD) von Kubernetes hostet. Der Produktivmodus skaliert die Anzahl der ControlPlane-Knoten von einer Node auf drei Knoten, dies erhöht die Fehlertoleranz und ermöglicht das Management des Kubernetes Clusters / KubeAPI auch während ein ControlPlane-Knoten nicht verfügbar ist.
  3. 1_Worker: Dieser Pool ist der erste Worker Pool, je nach Struktur und Funktion des Clusters werden ein oder mehrere Worker Pools erstellt, in diesem Beispiel wird zwischen Compute Nodes und Storage Nodes unterschieden. Die Anzahl der Worker Nodes ist frei und jederzeit skalierbar, es wird jedoch empfohlen, mindestens zwei Worker Nodes zu haben, um Workload Failover zu ermöglichen.
  4. 2_Storage: Dieser Pool ist der zweite Worker Pool, den wir über den Button "Add WorkerPool" hinzufügen können. Das Besondere hier ist, dass wir die Option "Storage Pool" aktiviert haben, was es uns ermöglicht, für jede Node in diesem Pool eine weitere Festplatte hinzuzufügen, die wir als lokalen Speicher verwenden können. Achtung: Diese Festplatten sind an die Nodes gebunden und werden gelöscht, sobald der entsprechende Node gelöscht wird.

Wenn alles wie gewünscht selektiert ist, kann man mittels "Deploy Cluster" am unteren Rand des Bildschirms das Cluster erstellen, nach Drücken dieses Knopfes wird das Deployment direkt gestartet und man sieht noch eine kleine Übersicht.

Das Erstellen eines Clusters dauert zwischen 3 und 10 Minuten, je nach zugewiesenen Ressourcen.

Cluster Dashboard

Navigieren Sie via Navigationsleiste zu Kubernetes und selektieren Sie Ihr gewünschtes Cluster.

Zunächst wird der Cluster Health Status als "unhealthy" angezeigt, mit der Funktion "Check" kann dieser überprüft werden und einige Sekunden später wird der Status angepasst.

Create_Cluster_Dashboard

Das Cluster Dashboard gibt Ihnen einen Überblick über Ihren Kubernetes Cluster.

Cluster Info

"Cluster Info" zeigt die wichtigsten Informationen über den Cluster an. Ausserdem können Sie hier die Talos-Konfigurationsdatei herunterladen, mit der Sie Ihre Nodes steuern und manipulieren können. Aus Sicherheitsgründen bieten wir Ihnen auch die Möglichkeit, die Liste der erlaubten IPs über "Talos API Allowed IPs" zu manipulieren.

Wie bereits bei der Erstellung erwähnt, sind alle IPs zulässig, sofern Sie keine dedizierte IP angeben.

Cluster Resources

Der Bereich "Cluster Ressourcen" zeigt Ihnen in einer kurzen Übersicht, wie viele Ressourcen für alle Geräte zusammen verwendet werden. Hier werden nicht nur die Kubernetes Nodes angezeigt, sondern auch die Load Balancer.

Kubernetes Configuration

"Kubernetes Configuration" zeigt Ihnen die Grundeinstellungen Ihres Kubernetes Clusters, hier haben Sie wiederum die Möglichkeit, die "K8S API Allowed IPs" anzupassen, sowie die Kubernetes-Version zu aktualisieren. Des Weiteren finden Sie hier auch die Kube Config, welche sie direkt herunterladen können. um mit Kubectl oder anderen Tools darauf zuzugreifen.

Linked Load Balancers

"Linked Load Balancers" zeigt die verbundenen Load Balancer an, die für jeden Load Balancer angezeigte IP ist nicht die für das Kubernetes Load Balancing verwendete IP, sondern die primäre IP-Adresse des Load Balancers.

Pools und Nodes

Die Sektion "Pools und Nodes" ist der spannendste Teil, mittels "+" Knopf kann ein Arbeiter-Pool um einen Node erweitert werden, dies nennt man auch horizontales Skalieren. Skalieren bedeutet aber nicht nur das Erweitern eines Clusters, sondern auch das Verkleinern eines Clusters, dies ist ebenfalls mittels des "Delete"-Knopf möglich.

Bitte beachten Sie, dass es zwei Arten von "Delete"-Knopf gibt, einer befindet sich auf der Pool-Ebene, dieser löscht den gesamten Pool. Die zweite befindet sich auf der Node-Ebene und löscht einen bestimmten Node.

Da die Anforderungen unserer Kundinnen und Kunden variabler sind, besteht die Möglichkeit, mehrere Worker-Pools zu erstellen. Ein Arbeiter-Pool ist eine logische Deklaration von Ressourcen, die zur Erstellung neuer Knoten verwendet werden. Um die Skalierung der verfügbaren Ressourcen noch effizienter zu gestalten, erlauben wir auch die vertikale Skalierung der Pools, klicken Sie dazu auf das "⚙" des entsprechenden Pools. 

Das Erweitern der Ressourcen erfordert einen Neustart der Node, wir werden die Node über die API sanft herunterfahren. Für diese Aktion ist es wichtig, dass Sie genügend Ressourcen auf den anderen Nodes haben, um einen Node neu zu starten. Das Ressourcen-Upgrade der Nodes erfolgt seriell.

Cluster Changes

Die Sektion "Cluster Changes" ist eine Historie der Aktionen, die auf dem aktuellen Cluster durchgeführt wurden. Diese Logs können auch exportiert werden.