Erstellen zusätzlicher Nodegroups in Kubernetes Cluster auf CODE-DE OpenStack Magnum

Die Vorteile der Verwendung von nodegroups

Eine Nodegroup ist eine Gruppe von Knoten eines Kubernetes-Clusters, die die gleiche Konfiguration haben und die Container des Benutzers ausführen. Ein und derselbe Cluster kann verschiedene Nodegroups enthalten. Anstatt also mehrere unabhängige Cluster zu erstellen, können Sie nur einen erstellen und dann die Gruppen in Nodegroups aufteilen.

Eine Nodegroup trennt die Rollen innerhalb des Clusters und kann

  • das Ausmaß des Schadens begrenzen, wenn eine bestimmte Gruppe kompromittiert wird,

  • die Anzahl der API-Anfragen, die von einer bestimmten Gruppe ausgehen, regulieren und

  • Privilegienbereiche für bestimmte Knotentypen und zugehörige Arbeitslasten erstellen.

Weitere Verwendungszwecke von Nodegroups sind:

  • Sie können Tests durchführen.

  • Wenn Ihre Kubernetes-Umgebung nur über geringe Ressourcen verfügt, können Sie einen minimalen Kubernetes-Cluster erstellen und später Nodegroups hinzufügen und so die Anzahl der Kontroll- und Arbeitsknoten erhöhen.

  • Die Knoten einer Gruppe können einzeln erstellt, aktualisiert und gelöscht werden, ohne dass sich dies auf den Rest des Clusters auswirkt.

Was wir behandeln werden

  • Die Struktur des Befehls openstack coe nodelist

  • Wie man eine überschaubare Ausgabe aus der Befehlsgruppe nodelist erzeugt

  • Wie man auflistet, welche Nodegroups in einem Cluster verfügbar sind

  • Wie man den Inhalt einer bestimmten **Nodegroup in einem Cluster anzeigt

  • Wie man eine neue Knotengruppe erzeugt

  • Wie man eine bestehende Knotengruppe löscht

  • Wie aktualisiere ich Knotengruppen?

  • Wie man die Größe einer Knotengruppe ändert

  • Die Vorteile der Verwendung von Knotengruppen in Kubernetes-Clustern

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein CODE-DE Konto mit Horizon Interface https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.

Nr. 2 Erstellen von Clustern mit CLI

Der Artikel So verwenden Sie die Befehlszeilenschnittstelle für Kubernetes-Cluster auf CODE-DE OpenStack Magnum führt in die Erstellung von Clustern über eine Befehlszeilenschnittstelle ein.

Nr. 3 Openstack-Client mit der Cloud verbinden

Bereiten Sie Openstack- und Magnum-Clients vor, indem Sie Schritt 2 OpenStack- und Magnum-Clients mit Horizon Cloud verbinden aus dem Artikel ausführen Installation von OpenStack- und Magnum-Clients für die Befehlszeilenschnittstelle von CODE-DE Horizon

Nr. 4 Verfügbare Kontingente prüfen

Bevor Sie weitere Knotengruppen erstellen, überprüfen Sie den Status der Ressourcen mit den Horizon-Befehlen Computer => Übersicht. Siehe Dashboard-Übersicht - Projektkontingente und Flavors.

nodegroup Befehle

Sobald Sie einen Kubernetes-Cluster auf OpenStack Magnum erstellt haben, stehen Ihnen fünf nodegroup-Befehle zur Verfügung:

coe nodegroup create

coe nodegroup delete

coe nodegroup list

coe nodegroup show

coe nodegroup update

Damit können Sie den Cluster umgestalten, um z.B. verschiedene Images einzubinden, den Volume-Zugriff zu ändern, Maximal- und Minimalwerte für die Anzahl der Knoten festzulegen.

Schritt 1 Zugriff auf den aktuellen Status von Clustern und ihren Knotengruppen

Hier sehen Sie, welche Cluster im System verfügbar sind:

openstack coe cluster list --max-width 120
../_images/present_clusters.png

Der Standardprozess zur Erstellung von Kubernetes-Clustern auf OpenStack Magnum erzeugt zwei Nodegroups, default-master und default-worker. Verwenden Sie folgende Befehle

openstack coe nodegroup list kubelbtrue

openstack coe nodegroup list k8s-cluster

um die Standard-Knotengruppen für diese beiden Cluster aufzulisten, kubelbtrue und k8s-cluster.

../_images/listing_nodegroups.png

Die Knotengruppe default-worker kann nicht entfernt oder umkonfiguriert werden, planen Sie also bei der Erstellung des Basisclusters voraus.

Schritt 2: Erstellen einer neuen Knotengruppe

In diesem Schritt lernen Sie die Parameter kennen, die für den Befehl nodegroup create zur Verfügung stehen. Dies ist die allgemeine Struktur:

openstack coe nodegroup create [-h]
[--docker-volume-size <docker-volume-size>]
[--labels <KEY1=VALUE1,KEY2=VALUE2;KEY3=VALUE3...>]
[--node-count <node-count>]
[--min-nodes <min-nodes>]
[--max-nodes <max-nodes>]
[--role <role>]
[--image <image>]
[--flavor <flavor>]
[--merge-labels]
<cluster> <name>

Sie erstellen nun eine Knotengruppe mit zwei Mitgliedern, die Sie testing nennen, die Rolle wird test genannt, und fügen sie dem Cluster k8s-cluster hinzu:

openstack coe nodegroup create
   --node-count 2
   --role test
   k8s-cluster testing

Verwenden Sie dann den Befehl

openstack coe nodegroup list k8s-cluster

um die Nodegroups zweimal aufzulisten. Beim ersten Mal befindet sie sich im Status der Erstellung. Nach ein paar Sekunden, ist sie bereits erstellt worden.

../_images/created_new_nodegroup.png

In Horizon verwenden Sie den Befehl Orchestration => Stacks, um die Mechanismen aufzulisten, die neue Instanzen erzeugen. In diesem Fall sieht der Stapel wie folgt aus:

../_images/stacks_creations.png

Klicken Sie in Horizon auf die Befehle Contaner Infra => Clusters => k8s-clusters und sehen Sie, dass es jetzt insgesamt fünf Knoten gibt:

../_images/cluster_inside.png

Schritt 3 Verwenden von role zum Filtern von Nodegroups im Cluster

Es ist möglich, Knotengruppen nach der Rolle zu filtern. Hier ist der Befehl, um nur die Test-Knotengruppe anzuzeigen:

openstack coe nodegroup list k8s-cluster --role test
../_images/role_test.png

Mehrere Knotengruppen können denselben Rollennamen haben.

Die Rollen können verwendet werden, um die Knoten zu planen, wenn der Befehl kubectl direkt auf dem Cluster verwendet wird.

Schritt 4 Anzeigen der Details der erstellten Knotengruppe

Der Befehl show zeigt die Details einer Knotengruppe in verschiedenen Formaten an - json, table, shell, value oder yaml. Die Vorgabe ist table, verwenden Sie den Parameter –max-width, um die Anzahl der Spalten darin zu begrenzen:

openstack coe nodegroup show --max-width 80 k8s-cluster testing
../_images/table_testing.png

Schritt 5 Vorhandene Knotengruppe löschen

In diesem Schritt sollen Sie versuchen, eine Nodegroup mit geringem Platzbedarf zu erstellen:

openstack coe nodegroup create
   --node-count 2
   --role test
   --image cirros-0.4.0-x86_64-2
   --flavor eo1.xsmall
   k8s-cluster cirros

Nach einer Stunde wurde der Befehl abgebrochen und die Erstellung ist fehlgeschlagen. Die Ressourcen bleiben jedoch im System eingefroren, so dass sie wie folgt gelöscht werden können.

Eine Möglichkeit ist die Verwendung des CLI-Unterbefehls delete, etwa so:

openstack coe nodegroup delete k8s-cluster cirros

Der Status wird in DELETE_IN_PROGRESS geändert.

Eine andere Möglichkeit ist, die Instanzen dieser erstellten Knoten zu finden und sie über die Horizon-Schnittstelle zu löschen. Suchen Sie die vorhandenen Instanzen mit den Befehlen Compute => Instanz und filtern Sie nach Instanzname, mit dem Text k8s-cluster-cirros-. Das kann wie folgt aussehen:

../_images/filtered_cirros.png

und löschen Sie sie dann, indem Sie auf die rote Schaltfläche Delete Instances.

Sie erhalten einen Bestätigungstext in der Cloud in der oberen rechten Ecke.

Unabhängig von der Art und Weise werden die Instanzen nicht sofort gelöscht, sondern geplant für eine Löschung in naher Zukunft.

Die Standard-Master- und Worker-Knotengruppen können nicht gelöscht werden, alle anderen jedoch schon.

Schritt 6 Aktualisierung der bestehenden Nodegroup

In diesem Schritt wird eine bestehende Nodegroup direkt aktualisiert, anstatt sie nacheinander zu löschen und wieer hinzuzufügen. Der Beispielbefehl lautet:

openstack coe nodegroup update k8s-cluster testing
   replace min_node_count=1

Anstelle von replace können auch die Kommandos add und delete verwendet werden.

Im obigen Beispiel wird die Mindestanzahl der Knoten auf 1 festgelegt (vorher war sie 0, da der Parameter min_node_count nicht angegeben wurde und sein Standardwert 0 ist).

Schritt 7 Größenänderung der Knotengruppe

Die Größenänderung der Nodegroup ist ähnlich wie die Größenänderung des Clusters, mit dem Zusatz des Parameters –nodegroup. Derzeit ist die Anzahl der Knoten in der Gruppe testsing 2. Ändern Sie sie auf 1:

openstack coe cluster resize k8s-cluster
   --nodegroup testing 1

Um das Ergebnis zu sehen, verwenden Sie den Befehl

openstack coe nodegroup list --max-width 120 k8s-cluster

Sie sehen:

../_images/nodegroup_resized.png

Ein Cluster kann nicht über die bei der Erstellung der Nodegroup festgelegten Min-Knoten/Max-Knoten hinaus skaliert werden.

So sieht der Zustand der Netze nach all diesen Änderungen aus (Befehle: Network => Network Topology => Small im Horizon Interface):

../_images/nodegroups_network_graph.png