Erstellen eines Kubernetes-Clusters mit CODE-DE OpenStack Magnum

In diesem Tutorial beginnen Sie mit einem leeren Horizon-Bildschirm und führen am Ende einen vollständigen Kubernetes-Cluster aus.

Was wir behandeln werden

  • Erstellen eines neuen Kubernetes-Clusters unter Verwendung einer der Standard-Cluster-Vorlagen

  • Visuelle Interpretation der erstellten Netzwerke und Kubernetes-Cluster-Knoten

Voraussetzungen

Nr. 1 Zugang und Ressourcen

Sie benötigen einen CODE-DE Hosting-Account mit Horizon-Schnittstelle https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.

Die Ressourcen, die Sie benötigen und nutzen können, finden Sie in Ihrem Konto. Prüfen Sie Ihre Kontostatistiken unter https://administration.code-de.org/login um sicherzustellen, dass Sie über ausreichend Ressourcen verfügen.

Nr. 2 Private und öffentliche Zugriffsschlüssel

Ein SSH-Schlüsselpaar, das in OpenStack Dashboard erstellt wurde. Um es zu erstellen, folgen Sie diesem Artikel Wie erstellt man ein Schlüsselpaar im OpenStack Dashboard?.

Das in diesem Artikel erstellte Schlüsselpaar nennen wir „sshkey“. Sie werden es als einen der Parameter für die Erstellung des Kubernetes-Clusters verwenden.

Schritt 1: Neues Cluster erstellen

Klicken Sie auf Container Infra und dann auf Cluster.

../_images/clusters_command.png

Da noch keine Cluster vorhanden sind, klicken Sie auf die Schaltfläche + Erstelle Cluster auf der rechten Seite des Bildschirms.

../_images/create_new_cluster.png

Auf der linken Seite und in blauer Farbe befinden sich die Hauptoptionen, in die Sie Informationen für den Cluster eingeben. Die drei mit Sternchen versehenen Eingaben für Details, Größe und Netzwerk sind obligatorisch; Sie müssen dort entweder neue Werte eingeben oder die angebotenen Standardwerte in jedem Bildschirm bestätigen. Wenn Sie alle Werte eingegeben haben, wird die Schaltfläche Senden in der unteren rechten Ecke aktiv.

Cluster Name

Dies ist Ihr erster Cluster, nennen Sie ihn einfach Kubernetes.

../_images/cluster_name_filled_in.png

Der Clustername darf keine Leerzeichen enthalten. Die Verwendung eines Namens wie XYZ k8s Production führt zu einer Fehlermeldung, während ein Name wie XYZ-k8s-Production dies nicht tut.

Cluster Vorlage

Die Cluster-Vorlage ist eine Blaupause für die Grundkonfiguration des Clusters, wobei die Versionsnummer die verwendete Kubernetes-Version widerspiegelt.

Wählen Sie k8s-stable-1.23.5 als die höchste Version, die auf der Cloud von CODE-DE verfügbar ist.

../_images/eolab_templates_to_select.png

Sie sehen sofort, wie die Clustervorlage angewendet wird:

../_images/cluster_template_detail2.png

Verfügbarkeitszone

nova ist der Name des zugehörigen Moduls in OpenStack und ist die einzige hier angebotene Option.

Schlüsselpaar

Unter der Voraussetzung, dass Sie Voraussetzung Nr. 2 verwendet haben, wählen Sie sshkey.

../_images/white_keypair_select.png

Addon Software - Zugang zu EO-Daten ermöglichen

Dieses Feld ist spezifisch für OpenStack-Systeme, die von der Hosting-Firma Cloudferro entwickelt werden. EODATA bedeutet hier Earth Observation Data und bezieht sich auf Daten, die von wissenschaftlichen Satelliten zur Überwachung der Erde gewonnen werden.

Wenn Sie dieses Feld ankreuzen, wird ein Netzwerk installiert, das Zugriff auf die heruntergeladenen Satellitendaten hat.

Wenn Sie nur versuchen, etwas über Kubernetes auf OpenStack zu lernen, lassen Sie diese Option deaktiviert. Und umgekehrt: Wenn Sie in die Produktion gehen und Satellitendaten verwenden möchten, aktivieren Sie sie.

Bemerkung

Es gibt eine Cluster-Vorlage mit der Bezeichnung eodata_access_enabled=true, die - wenn sie aktiviert ist - den gleichen Effekt hat wie die Einrichtung eines Netzwerks für die Verbindung zu EODATA.

So sieht der Bildschirm aus, wenn alle Daten eingegeben worden sind:

../_images/create_new_cluster_filled_in2.png

Klicken Sie auf die Schaltfläche Weiter unten rechts oder auf die Option Größe im linken Hauptmenü des Bildschirms, um mit dem nächsten Schritt der Definition eines Kubernetes-Clusters fortzufahren.

Schritt 2: Definieren von Master- und Worker-Knoten

Im Allgemeinen werden die Masterknoten für die interne Infrastruktur des Clusters verwendet, während die Arbeiterknoten für die K8s-Anwendungen verwendet werden.

So sieht dieses Fenster vor der Eingabe der Daten aus:

../_images/cluster_size_new.png

Wenn es Felder mit Standardwerten gibt, wie z. B. Variante der Masterknoten und Variante der Arbeiterknoten, wurden diese Werte in der Clustervorlage vordefiniert.

Anzahl der Master-Knoten

../_images/number_of_master_nodes_filled_in.png

Ein Kubernetes-Cluster besteht aus Master- und Worker-Knoten. In realen Anwendungen würde ein typisches Setup 3 Master-Knoten betreiben, um die Hochverfügbarkeit der Cluster-Infrastruktur zu gewährleisten. In diesem Fall möchten Sie Ihren ersten Cluster in einer neuen Umgebung erstellen und begnügen sich daher mit einem Masterknoten.

Variante der Master-Knoten

../_images/flavor2_master2.png

Wählen Sie eo1.large als Hauptknotenvariante.

Anzahl der Arbeitsknoten

../_images/worker_nodes_number.png

Geben Sie 3 ein. Dies dient nur zu Einführungszwecken; in der Praxis kann der Cluster aus mehreren Arbeitsknoten bestehen. Die Richtlinien für die Größe des Clusters gehen über den Rahmen dieses Artikels hinaus.

Variante der Arbeiterknoten

Wählen Sie wiederum eo1.large.

Auto Scaling

../_images/auto_scaling_filled_in.png

Wenn Der Bedarf an Prozessier-Diensten groß ist, kann das Kubernetes-System auf mehr Worker-Knoten skaliert werden. Unsere Beispiel-Einstellung ist minimal 2 und maximal 4 Worker-Knoten. Mit dieser Einstellung wird die Anzahl der Knoten dynamisch zwischen diesen Werten angepasst, basierend auf der aktuellen Last (Anzahl und Ressourcenanforderungen der Pods, die K8S-Anwendungen im Cluster ausführen).

So sieht die Eingabemaske Größe aus, wenn alle Daten eingegeben sind:

../_images/size_screen_filled.png

Um fortzufahren, klicken Sie auf die Schaltfläche Weiter unten rechts oder auf die Option Netzwerk im linken Hauptmenü.

Schritt 3 Definieren von Netzwerk und LoadBalancer

Dies ist der letzte der obligatorischen Bildschirme und die blaue Schaltfläche Senden in der unteren rechten Ecke ist jetzt aktiv. (Sollte dies nicht der Fall sein, verwenden Sie die Schaltfläche Zurück, um die Werte in den vorherigen Bildschirmen zu korrigieren).

../_images/network_option.png

Load Balancer für Master-Knoten aktivieren

Diese Option wird automatisch aktiviert, wenn Sie mehr als einen Masterknoten ausgewählt haben. Die Verwendung mehrerer Master-Knoten gewährleistet die Hochverfügbarkeit der Cluster-Infrastruktur, und in diesem Fall wird der Load Balancer benötigt, um den Datenverkehr zwischen den Mastern zu verteilen.

Auch wenn Sie nur einen Master-Knoten ausgewählt haben, was in Nicht-Produktionsszenarien, z. B. für Tests, relevant sein kann, haben Sie die Möglichkeit, den Load Balancer entweder hinzuzufügen oder zu überspringen. Beachten Sie, dass die Verwendung eines LoadBalancers mit einem Masterknoten eine wichtige Option ist, da sie den Zugriff auf den Cluster von außerhalb des Clusternetzwerks ermöglicht. Wenn Sie diese Option nicht auswählen, müssen Sie sich auf den SSH-Zugriff auf den Master verlassen.

Neues Netzwerk erstellen

Dieses Feld ist eingeschaltet, was bedeutet, dass das System ein Netzwerk nur für diesen Cluster erstellt. Da Kubernetes-Cluster Subnetze für die Kommunikation untereinander benötigen, wird zunächst ein entsprechendes Subnetz erstellt, das dann später verwendet wird.

Es wird dringend empfohlen, bei der Erstellung eines neuen Clusters die automatische Erstellung eines Netzwerks zu verwenden.

Wenn Sie das Kontrollkästchen deaktivieren, können Sie jedoch auch ein bestehendes Netz verwenden.

Bestehendes Netzwerk nutzen

Die Verwendung eines bestehenden Netzwerks ist eine fortgeschrittenere Option. Sie müssten zunächst ein Netzwerk für diesen Cluster in OpenStack erstellen und die erforderlichen Anpassungen vornehmen. Die Erstellung eines solchen benutzerdefinierten Netzwerks würde den Rahmen dieses Artikels sprengen. Beachten Sie, dass Sie nicht das Netzwerk eines anderen Clusters, Projektnetzwerks oder EODATA-Netzwerks verwenden sollten.

Wenn Sie über ein bestehendes Netzwerk verfügen und fortfahren möchten, müssen Sie das Netzwerk und das Subnetz aus dem Dropdown-Menü unten auswählen:

../_images/use_an_existing_network.png

Beide Felder sind mit einem Sternchen versehen, was bedeutet, dass Sie in jedem der beiden Felder einen konkreten Wert angeben müssen.

Cluster API

Die Einstellung „Im öffentlichen Internet verfügbar“ bedeutet, dass sowohl den Master- als auch den Worker-Knoten Floating IPs zugewiesen werden. Diese Option ist in der Regel redundant und hat Sicherheitsbedenken. Wenn Sie keine besonderen Anforderungen haben, lassen Sie diese Option auf der Einstellung „privat“. Dann können Sie den gewünschten Knoten jederzeit über den Abschnitt „Compute“ in Horizon Floating IPs zuweisen.

Ingress Controller

Die Verwendung von Ingress ist eine fortschrittlichere Funktion, die sich auf die Lastverteilung des Datenverkehrs zu den Kubernetes-Anwendungen bezieht.

Wenn Sie gerade erst mit Kubernetes beginnen, werden Sie diese Funktion nicht sofort benötigen, so dass Sie diese Option weglassen können.

Schritt 4: Erweiterte Optionen

Option Management

../_images/management.png

In diesem Fenster gibt es nur eine Option, Automatische Reparatur und ihr Feld Ungesunde Knoten automatisch reparieren.

Ein Knoten ist eine Grundeinheit eines Kubernetes-Clusters und die Kubernetes-Systemsoftware fragt automatisch den Status jedes Clusters ab. Wenn dieser nicht bereit oder nicht verfügbar ist, ersetzt das System den ungesunden Knoten durch einen gesunden - vorausgesetzt natürlich, dass dieses Feld aktiviert ist.

Wenn Sie zum ersten Mal die Bildung von Kubernetes-Clustern ausprobieren, ist die automatische Heilung für Sie vielleicht nicht von Interesse. In der Produktion sollte die automatische Reparatur jedoch immer aktiviert sein.

Option Erweitert

../_images/advanced_option.png

Die Option Erweitert erlaubt die Eingabe von sogenannten Labels, das sind benannte Parameter für das Kubernetes-System. Normalerweise müssen Sie hier nichts eingeben.

Labels können die Art und Weise ändern, wie die Clustererstellung durchgeführt wird. Es gibt eine Reihe von Bezeichnungen, die Vorlagen- und Workflow-Bezeichnungen, die das System standardmäßig einrichtet. Wenn dieses Kontrollkästchen nicht aktiviert ist, werden die Standardetiketten unverändert verwendet. Damit ist gewährleistet, dass der Cluster mit allen wesentlichen Parametern in der richtigen Reihenfolge gebildet wird. Auch wenn Sie, wie in der obigen Abbildung gezeigt, Ihre eigenen Bezeichnungen hinzufügen, wird alles funktionieren.

Wenn Sie das Feld Ich möchte Vorlagen- und Workflow-Etiketten überschreiben aktivieren und eine der Vorlagen- und Workflow-Etiketten namentlich verwenden, werden diese so eingerichtet, wie Sie es angegeben haben. Verwenden Sie diese Option, wenn überhaupt, nur sehr selten und nur, wenn Sie sicher sind, was Sie tun.

Schritt 5: Bildung des Clusters

Sobald Sie auf die Schaltfläche Submit klicken, beginnt OpenStack mit der Erstellung des Kubernetes-Clusters für Sie. In der oberen rechten Ecke des Fensters wird eine grün hinterlegte Cloud-Meldung angezeigt, die besagt, dass die Erstellung des Clusters gestartet wurde.

Die Erstellung von Clustern dauert in der Regel zwischen 10 und 15 Minuten. Sie wird automatisch abgebrochen, wenn sie länger als 60 Minuten dauert.

Wenn bei der Erstellung des Clusters ein Problem auftritt, signalisiert das System dies auf verschiedene Weise. In der oberen rechten Ecke wird eine Meldung mit rotem Hintergrund angezeigt, z.B.:

../_images/unable_to_create_a_cluster.png

Wiederholen Sie einfach den Vorgang, und in den meisten Fällen werden Sie zum folgenden Bildschirm weitergeleitet:

../_images/cluster_forming.png

Klicken Sie auf den Namen des Clusters, Kubernetes, und Sie sehen, wie es aussieht, wenn alles gut gelaufen ist.

../_images/creation_in_progress2.png

Schritt 6: Überprüfung des Cluster-Status

Hier sehen Sie, was OpenStack Magnum für Sie als Ergebnis der Eingabe der Daten in diesen drei Eingabemasken erstellt hat:

  • Ein neues Netzwerk namens Kubernetes, komplett mit Subnetz, bereit für weitere Verbindungen.

  • Neue Instanzen - virtuelle Maschinen, die als Knotenpunkte dienen.

  • Ein neuer externer Router.

  • Neue Sicherheitsgruppen, und natürlich

  • Ein voll funktionsfähiger Kubernetes-Cluster als Ergänzung zu all diesen anderen Elementen.

Sie können sehen, dass die Anzahl der Knoten im Cluster anfangs 3 war, aber nach einer Weile hat sich der Cluster automatisch auf 2 skaliert. Dies ist zu erwarten und ist das Ergebnis des Autoscalers, der festgestellt hat, dass unser Cluster in Bezug auf die Anwendungslast größtenteils noch im Leerlauf ist.

Es gibt noch eine weitere Möglichkeit, die Einrichtung des Clusters zu betrachten und Abweichungen vom Sollzustand zu überprüfen. Klicken Sie im Hauptmenü auf Netzwerk und dann auf Netzwerktopologie. Sie sehen dann eine grafische Darstellung des Netzwerks in Echtzeit. Sobald eines der Clusterelemente hinzugefügt wird, wird es auf dem Bildschirm angezeigt.

../_images/network_topology_with_labels.png

Auch im „Compute“-Panel von Horizon können Sie die virtuellen Maschinen sehen, die für Master- und Worker-Knoten erstellt wurden:

../_images/new_instances2.png

Knotennamen beginnen mit kubernetes, da dies der Name des Clusters in Kleinbuchstaben ist.

Ressourcen, die bei einem Versuch, einen Cluster zu erstellen, gebunden wurden, werden nicht automatisch zurückgewonnen, wenn Sie erneut versuchen, einen neuen Cluster zu erstellen. Daher führen mehrere Versuche hintereinander zu einer Patt-Situation, in der kein Cluster gebildet werden kann, bis alle gebundenen Ressourcen freigegeben sind.

Was als nächstes zu tun ist

Sie haben nun einen voll funktionsfähigen Kubernetes-Cluster. Sie können

  • vorgefertigte Docker-Images verwenden, um die Installation von Anwendungen zu automatisieren,

  • das Kubernetes-Dashboard aktivieren und den Zustand des Clusters online überwachen,

  • auf EODATA über einen Cluster zugreifen.

und so weiter.

Hier finden Sie einige einschlägige Artikel:

Artikel So verwenden Sie die Befehlszeilenschnittstelle für Kubernetes-Cluster auf CODE-DE OpenStack Magnum zeigt, wie man die Befehlszeile zum Erstellen von Kubernetes-Clustern verwendet.

Um von der Kommandozeile aus auf Ihren neu erstellten Cluster zuzugreifen, lesen Sie den Artikel Zugriff auf Kubernetes-Cluster nach der Bereitstellung mit Kubectl auf CODE-DE OpenStack Magnum.

Um mit EODATA von einem Kubernetes-Cluster aus zu arbeiten, siehe Artikel Zugriff auf EODATA von Kubernetes Pods in CODE-DE FRA1-1 Cloud mit boto3.