Erstellen zusätzlicher Nodegroups in Kubernetes Cluster auf EO-Lab 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 EO-Lab 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 EO-Lab 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 EO-Lab 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

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.

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.

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:

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

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

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

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:

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:

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):
