8. Kubernetes Management¶
Inhaltsverzeichnis
8.1. Einleitung¶
Kubernetes hat sich als De-facto-Standard für die Orchestrierung von Containern etabliert und ermöglicht die Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen in großem Maßstab.
Unser Kubernetes-Service im neuen Cloud Services portal bietet Ihnen eine leistungsstarke und verwaltete Kubernetes-Umgebung. Das bedeutet, wir kümmern uns um die komplexe Einrichtung, Wartung und das Management der Kubernetes Control Plane (Master Nodes), sodass Sie sich voll und ganz auf die Entwicklung und den Betrieb Ihrer Anwendungen konzentrieren können.
Dieser Service ist nahtlos in unser Portal integriert und nutzt die robuste Infrastruktur von OpenStack und Gardener für die Bereitstellung der Worker Nodes. Profitieren Sie zudem von der einfachen Integration mit weiteren Portal-Services wie unserem S3-kompatiblen Objektspeicher und dem zentralen Backup-Service.
Der Service richtet sich an Entwickler, DevOps-Teams und Systemadministratoren, die eine skalierbare, zuverlässige und einfach zu verwaltende Plattform für ihre containerisierten Workloads suchen.
Diese Dokumentation führt Sie durch alle notwendigen Schritte: von den Voraussetzungen über die Erstellung und Konfiguration Ihres ersten Clusters bis hin zur täglichen Verwaltung und Skalierung. Wir erklären die spezifischen Funktionen und Optionen, die Ihnen in unserem Cloudportal zur Verfügung stehen.
8.2. Vorraussetzung¶
Diese Vorrausetzungen sind nötig um ein Kubernetes-Cluster im Cloud Servies Portal zu erstellen.
- Ein gültiger Account im Cloud Services Portal.
- Notwendige Berechtigungen/Rollen im Portal, um Kubernetes-Cluster erstellen zu können.
- Genügend Quota (vCPU/vRAM/Storage) für die Erstellung
- eventuell lokale Tools (kubectl, k9s …)
8.3. Erste Schritte¶

Wir bieten ihnen hier zwei Möglichkeiten an, ihr Kubernetes-Cluster in unserem Cloud Services Portal anzulegen:
- Als neues Projekt
- in ein bestehendes Projekt
8.4. Einen Cluster erstellen¶
Um ein Cluster zu erstellen wird zwingend ein Projekt benötigt, dass über genügend Quota verfügt. Die Schritt für Schritt Anleitung bezieht sich darauf, dass der Wizard ein eigenständiges Projekt anlegt. Bei einem schon vorhanden Projekt fällt natürlich die Auswahl des Projektnames und Grösse weg.
8.4.1. Schritt für Schritt¶

Grundsätzlich ist der Wizard sehr einfach zu benutzen und relativ klar mit den Formularfeldern um ein Cluster anzulegen.
- Clustername -> Darf nicht länger als 10 Zeichen lang sein.
- Purpose
- testing -> Kein Monitoring , kein HA der Kubernetes Controller-Componenten.
- production -> Monitoring sowie HA der Controller-Componenten.
- Image -> Hier kann die gewünschte Worker-Image version definiert werden. Ein späterers Wechseln dieser wird nicht unterstützt.
- Kube-Version -> Hier kann die benötigte Kubernetes-Version definiert werden. Diese Kann im Nachhinein nur höher, also geupgraded werden aber nicht runter, also gedowngraded werden.
- Flavor -> Hier werden die möglich Openstack-Flavor für die Workernodes definiert.
- Zones -> Hier wird die Verteilung der Worker-Nodes auf unsere verschieden AZ definiert.
- Worker Anzahl -> Hier können die Min und die Max Zahl an Worker. Unser Service erkennt eventuell Lastspitzen und schaltet ensprechend mehr Worker/Resourcen für das Cluster frei.
Bemerkung
Bitte beachten sie, dass dieser Prozess je nach nach Anzahl der Worker bis zu 10 Minunten in anspruch nehmen kann.
Sobald das Cluster erstellt wurde taucht es in der Liste auf:

8.5. Auf Cluster Zugreifen¶
Wenn das Kubernetes-Cluster erstellt wurde und im Status healty ist, können sie sich sowohl eine admin-Konfig als auch eine viewer-Konfig erstellen lassen.


Warnung
Bitte beachten sie, dass diese Zugänge aus Sicherheitsgründen nur 24h gültig sind, unabhängig der anzahl der Tage im Feld!
8.5.1. Kubernetes Konfig mit Kubectl nutzen¶
Nach dem Download erhalten sie ein YAML-File das wie folgt aussieht:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQ1akNDQWs2Z0F3SUJBZ0lRSlRoRUhBWjlrMzJMZDlnQWg5bFhGREFOQmdrcWhraUc5dzBCQVFzRkFEQU4KTVFzd0NRWURWUVFERXdKallUQWVGdzB5TlRBME1UUXhNRFExTVRsYUZ3MHpOVEEwTVRReE1EUTJNVGxhTUEweApDekFKQmdOVkJBTVRBbU5oTUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUE0aEU1CmpQUHZFNDFiUnNuUHV5a0J2WkthR3ovTWJKa3Ewb0liQzlVVlVYTW1EV0hqeWpjeHdLK0haZ2NSNG1VY0VseXQKVVk1dSt1UGF1SlpFQjk3a3hCRTY0U2h4WFdDK0VReDJzNHZBdFhjVkxadFdyTGJ4cjNrVnY4ZjUxY280SWpoOApJOGZmVk51cDVvbmpia0ZqWTQwQjg2c0gzeUg3OUoyWVEyWC9zUTZrajhDVEVxUFRRZGcvNGZ3Ymh5WUpRQVpqCjQwbHZWTTVCcndPVm1KMDEzZkkyNVlmME15dDJuUjRlMGo2TVlVZEhxclFScjh2bStXc1BzbHN0M1YzdE02YWcKQ0p3NU40VXlrSDZRUVNRcmdLS0ZmNmMrbVJNT0VIWS9WZGVack5SWWtIQmVZY2x0OVIxTkMzK3hjK2ZaM3ZyeAp5ZVFsS3NzV0x1Ly8yTElVWVlCbE5FWDhadzhuRW9Id3Q5OEZkQTN4ZHRHdXJkcGJ6MHFNZVVRK1VtblZPWTRLCldpTlR6WHkvVlpLVFFmWkFER1dJdVZxUFAxVnh0Z2I5d2tscjhRd28xVFljV25aMFRML3JLa3gvemNYK1pGbW8KbXVseUg2eTl6ZnZpdFBkWWdLT0c5MVl0Q2grM1F2bmlxbEFIUy9BZjRYL2F4Z2dsbWYwZURUaXVXMFhwQWdNQgpBQUdqUWpCQU1BNEdBMVVkRHdFQi93UUVBd0lCcGpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXCkJCU3hIYm9seTV4NFJXbS9aeW1ibENndllrL3d4ekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBWUVBS0FIL0RBRlUKZ0Jibm5zV3JRVWppMVYxajVWNW5TWHM3K2JCT2MxSVdqT3VjSDVhc3Y3OGlHaC9WV21pblFwS0ZPNTAwWFREMgp3T29ubVN1dE9sLzFpa0E1M29Mb25TdU9JWG5vdXYzVFc2SUo1WExsT3k4QU1FY0FrQy9KN2NrdS9CZUJ1QTMvClJ2eU51U1RpN2p5S1l4WnhXZDRzYnNESkZ1Qi9ycFBhSmtEcTZYRTFCTWJOeUd2UTduZDJucXhINDBCaWtiZ2MKOEpuTjFRb2N3b25WSFR2YWtkZGtUa1E2emcraDlMcUJBdy9UR0pvdmJRM1o1bFJJUDBqdGFXVnVrNlovK3k2RApIZWdDZkMraWlOOTVpalVrY25nMkZMVE9wSm5BdHloRnNtUlFKSjM3cGZhcWxrMXNPeHoyUUIxaGpMOHRveHNTCmJwbkZURW5tclQwc29uQjhUZXgzSzlrT2FrcGVuQXZ3cG1OQXhCd2RodHpyRFdUSnAzUmx4S2F0NENLR2U0R0kKVjFrSEVkczN6RjFJK0VjOW5obXVxcEViNEdXbzNsVTJMVllwSnBscnd3QnhFbHU1TzN4b0IxM1hTME96TittTgpmdWpNemZNakkzazBpODd5cVFlRm5kcVQ4ZjJhVFFieVovYWNLdVNGTDRzV0xQTWtmTDFoQWVBOAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://api.kc-6iizv1z.ew5cmpb.gardener.ewcs.ch
name: garden-8586188f435346b4af787015734ef963--kc-6iizv1z-external
- Der Name entspricht dem des Cluster-Namen + Rolle
8.5.2. Auf ihrem Client¶
Diese Yaml-Datei können sie nun entweder nach /home/[user]/.kube/config
kopieren
Oder einen Export für dieses defenieren der das YAML referenziert:
export KUBECONFIG=/tmp/kubeconfig-kv-6iiuvlz-admin.yml
8.5.3. Beispiel¶
Nun können sie einfach mit Kommandozeilen-Tool kubectl das Cluster abfragen:
root@kube-trial:~/# kubectl get nodes
NAME STATUS ROLES AGE VERSION
shoot--ew5cmpb--kc-6iizv1z-default-worker-z1-5c69c-mpnzr Ready <none> 84m v1.31.3
In diesem Fall hat das Cluster nur eine Worker-Node.
8.6. Cluster bearbeiten¶
Über das Dropdown-Feld gelangen sie in das Update-Forumlar:

Hier stehen ihnen folgende möglichkeiten zu Verfügung:
- Update der Kubernetes Version
- Update des Purpose von
Testing
aufProduction
Bemerkung
Je nach Vorgeschichte kann es passieren, dass sie schon auf Status Production
sind. Bitte beachten sie, dass nicht mehr zurück zum Status testing
kommen, da dies aus technischen Gründen nicht möglich ist.
Gleich verhält es sich zur Kubernetes-Version des Cluster, falls sie schon die neueste Version ausgewählt haben, wird ihnen hier auch keine neuere Angeboten. Wir werden hier stets versuchen ihnen die neuesten Version von Kubernetes bereitzustellen.
Warnung
Bitte beachten sie, dass Änderungen an Purpose oder an Version eine grössere Cluster-Operation nach sich zieht und dementsprechend Zeit benötigt.
8.7. Worker Nodes¶
Ihre Worker lassen sich über das Dropdown Worker-Groups managen.

- bestehende Worker-Groups lassen sich nur in der Anzahl bearbeiten
- falls sie eine Aufteilung über mehrere AZs haben wollen, müssen sie eine neue Worker-Group anlegen und die alte gegenfalls löschen.
8.7.1. Neue Worker-Group erstellen¶
Der Button Create worker group öffnet für Sie folgendes Formular in dem Sie sich eine neue Worker-Group definieren können.

- Hier lassen sie ähnlich dem initialen Formular zusätzliche Worker-Groups für ihr Kubernetes-Cluster definieren.
Bemerkung
Auch hier muss auf die Quota des Projekts geachtet werden, da diese nicht überschritten werden können und dies im Zweifel zu einem Fehler bei erstellen der Worker-Nodes führt. Bitte beachten sie hier das Notifications-Tab
8.7.2. Worker Groups in Kubectl¶
root@kube-trial:~/.kube# kubectl get nodes
NAME STATUS ROLES AGE VERSION
shoot--ew5cmpb--kc-6iizv1z-default-worker-z1-5c69c-mpnzr Ready <none> 127m v1.31.3
shoot--ew5cmpb--kc-6iizv1z-test-z1-5cc9c-wb2zf Ready <none> 2m2s v1.31.3
- Die Worker-Groups werden anhander der Namen unterschieden.
8.7.3. Worker-Group löschen¶
Die vorhanden Worker Groups lassen sie bis eine Group löschen, so dass das Cluster funktionsfähig bleibt.
Warnung
Je nach Deployment und Definition der worker-node affinity, kann es passieren, dass sich eine ihre Worker-Groups nicht löschen lassen, da sonst die intigrität ihres Deployment nicht gewährleistet ist.
Das löschen der Groups wird über den Button Delete it eingeleitet.
Bemerkung
Bitte beachten sie, dass dieser Prozess auch Zeit benötigt, da die Nodes „gedrained“ werden und Pods verschoben werden müssen.
8.8. Cluster löschen¶
Das Löschen gestaltet sich ähnlich einfach wie bei den Worker-Groups, über das Dropdown auf der Cluster-Management-Seite lässt sich das komplette Cluster löschen.
Vorraussetzungen um ein Cluster zu löschen:
Warnung
Cluster auf den noch Deployments laufen, lassen sich nicht löschen !!!