Zum Hauptinhalt springen
Version: 1.89.x (Q2 26)

Virtual Clusters

Teil von Runtimes

Dies ist eine detaillierte Anleitung für Virtual Clusters (Cloud Native Deployments). Für einen Überblick über alle Runtime-Typen und wie man zwischen ihnen wählt, siehe Runtimes-Übersicht.

Mit Virtual Clusters lassen sich Kubernetes-Workloads innerhalb der Codesphere-Infrastruktur ausführen. Jeder Virtual Cluster stellt eine dedizierte Kubernetes-Umgebung für die Resource Group bereit und unterstützt standardmäßige Kubernetes-Workloads und -Tools.

Jeder Virtual Cluster ist isoliert und verfügt über eine eigene Control Plane sowie eigene Ressourcenlimits. Workloads können unabhängig von und sicher gegenüber anderen Resource Groups bereitgestellt, aktualisiert und entfernt werden.

Virtual Clusters sind als Managed Services innerhalb von Codesphere implementiert. Jeder Virtual Cluster läuft als verwaltete Kubernetes-Umgebung. Codesphere verwaltet die zugrunde liegende Infrastruktur, während Virtual Clusters die Vorteile der Kubernetes-APIs bieten und native Workloads sowie Abhängigkeiten unterstützen.

hinweis

Diese Funktion richtet sich an fortgeschrittene Nutzer mit Kubernetes-Erfahrung. Wer keinen direkten Zugriff auf Kubernetes-Primitive benötigt, sollte für einfachere Workflows einen anderen Typ der Codesphere Runtimes in Betracht ziehen.

Kompatibilität

Virtual Clusters sind auf maximale Flexibilität bei der Bereitstellung eigener Workloads ausgelegt. Eigene Kubernetes-Abhängigkeiten können mitgebracht und vertraute Tools wie Helm Charts genutzt werden, um Anwendungen und Services mit minimalem Aufwand direkt in das Codesphere-Ökosystem zu deployen.

tipp

Zum Beispiel lässt sich Apache Superset in nur wenigen Schritten aus der Codesphere-IDE oder der Landscape heraus direkt in den Virtual Cluster deployen:

helm repo add superset https://apache.github.io/superset
helm repo update
kubectl create namespace superset
helm install superset superset/superset --namespace superset

Konnektivität

Virtual Clusters sind eng mit der Codesphere-Plattform integriert, wodurch sich Kubernetes-Workloads leicht mit anderen Codesphere-Ressourcen verbinden lassen. Als Teil des Codesphere Host-Clusters können Virtual Clusters nahtlos mit Landscapes, Managed Services und anderen Ressourcen innerhalb desselben Teams kommunizieren. Diese Integration vereinfacht komplexe Architekturen und ermöglicht leistungsstarke Workflows über die gesamte Cloud-Infrastruktur hinweg.

Konnektivitätsdiagramm, das zeigt, wie Virtual-Cluster-Workloads mit Workspaces, Landscapes und Managed Services kommunizieren.

Zugehörige barrierefreie Textbeschreibung

Zugriff auf Cluster-Ressourcen

Kubernetes Pods und Services, die innerhalb des Virtual Clusters laufen, sind von jedem Workspace innerhalb derselben Resource Group aus erreichbar. Das bedeutet, dass direkt aus den Codesphere-Workspaces mit den Anwendungen und Services interagiert werden kann, was die Entwicklung und Fehlerbehebung effizienter macht.

info

Um auf einen im Virtual Cluster laufenden Service zuzugreifen, benötigt man folgende Informationen:

  1. Den Ressourcennamen (z. B. superset)
  2. Den Namespace-Namen (z. B. default)
  3. Die Codesphere Resource-Group-ID (z. B. 180312) Mit diesen Informationen lässt sich der Service über eine URL im folgenden Format erreichen:
http://[RESOURCE_NAME]-x-[VIRTUAL_NAMESPACE]-x-k8s.rg-[RESOURCE_GROUP_NAME]

Zugriff vom Virtual Cluster aus

Der Virtual Cluster kann auch auf andere Codesphere-Ressourcen zugreifen, wie Landscapes und Managed Services (zum Beispiel Managed Postgres) innerhalb derselben Resource Group. Dies erleichtert den Aufbau komplexer Multi-Service-Anwendungen, die sowohl Kubernetes als auch Codesphere-Lösungen umfassen.

info

Um von einem Virtual Cluster aus auf ein Workspace-Reactive zuzugreifen, wird Folgendes benötigt:

  1. Der Name des Landscape-Reactive-Service
  2. Die ID des Workspace, in dem das Reactive bereitgestellt ist Anschließend kann folgendes URL-Format verwendet werden:
http://ws-server-[WORKSPACE_ID]-[REACTIVE_NAME].workspaces

Mögliche Anwendungsfälle

  1. Superset als Helm Chart deployen
  2. Grafana deployen und mit einem Managed-Postgres-Service verbinden, der in Codesphere läuft
  3. Prometheus deployen und mit den in Codesphere laufenden Anwendungen verbinden, um benutzerdefinierte Metriken zu überwachen
  4. Eine Custom Resource Definition und Controller hinzufügen (z. B. JSPolicy)

Cluster-Zugriff

Der wichtigste Weg zur Interaktion mit dem Virtual Cluster ist die kubeconfig-Datei, die direkt in das Workspace-Dateisystem eingebunden wird. Diese Konfigurationsdatei ermöglicht es, kubectl- und helm-Befehle direkt im Workspace-Terminal und in den Ausführungsschritten der Landscape zu verwenden.

Die Konfigurationsdatei wird automatisch als ~/.kube/config in das Workspace-Dateisystem eingebunden. kubectl und helm verwenden sie standardmäßig, um sich mit dem Virtual Cluster zu verbinden.

tipp

Releases können in der Prepare- oder Run-Stage einer Landscape automatisiert und versioniert werden, indem Folgendes ausgeführt wird:

helm upgrade --install my-release my-charts/my-app --version 2.1.0

Auslösen einer Konfigurationsaktualisierung

Die Kubeconfig-Datei wird (erneut) in den Workspace eingebunden, wenn eines der folgenden Ereignisse eintritt:

  1. Die Liste der Workspace-Umgebungsvariablen wird geändert
  2. Der Workspace wird gestartet
  3. Workspace-Ressourcen werden aktualisiert (z. B. Plan-Änderung, Landscape-Synchronisierung)

info

Wir arbeiten daran, die Synchronisierung der Kubeconfig-Datei für Landscapes und langlaufende Workspaces zu verbessern. Bei Problemen mit einer veralteten oder fehlenden Kubeconfig kann derzeit versucht werden, eine Umgebungsvariable zu ändern oder den Workspace (neu) zu starten, um eine erneute Einbindung der Konfigurationsdatei auszulösen.

Abhängigkeiten

Die Binärdateien kubectl und helm sind im Standard-Codesphere-Workspace-Image vorinstalliert. Bei Verwendung eines eigenen Images sollte sichergestellt werden, dass diese Abhängigkeiten vorhanden sind, falls mit dem Virtual Cluster interagiert werden soll.

Verwalten von Clustern

Virtual Clusters sind als Managed Service in Codesphere verfügbar. Der Lebenszyklus der Clusters wird über die Managed-Services-Oberfläche verwaltet, wo Cluster nach Bedarf erstellt, aktualisiert und gelöscht werden können.

Weitere Details siehe die Managed-Services-Dokumentation.

Erstellen eines Virtual Clusters

info

Derzeit kann jede Resource Group aufgrund der Namespace-Beschränkungen der Resource Group nur einen Virtual Cluster besitzen. Vor dem Erstellen eines neuen Clusters sollte geprüft werden, ob die Resource Group bereits einen enthält.

Um einen Virtual Cluster zu erstellen, folgende Schritte ausführen:

  1. Zum Tab Managed Services im Codesphere-Workspace navigieren.
  2. Virtual Kubernetes Cluster aus dem Service-Katalog auswählen. Mit dieser Option lässt sich ein neuer Cluster für das Team einrichten.
  3. Einen Namen eingeben und den Plan entsprechend den Anforderungen konfigurieren:
  4. Bestätigen und warten, bis der Cluster bereit ist. Die Bereitstellung kann einige Augenblicke dauern. Virtual Cluster synchronisiert

Bearbeiten des Virtual Clusters

  1. Zum Tab Managed Services navigieren.
  2. Auf Settings klicken und den Tab Configuration für den Cluster öffnen.
  3. Auf Edit Configuration klicken und die Plan-Werte nach Bedarf anpassen. Virtual Clusters Konfiguration bearbeiten
  4. Bestätigen und warten, bis die Änderungen wirksam werden. Der Cluster aktualisiert seine Ressourcen entsprechend.

Pläne & Ressourcen

Virtual Clusters setzen Ressourcengrenzen mithilfe von Kubernetes ResourceQuota- und LimitRange-Objekten durch. Diese Einstellungen steuern den maximal verfügbaren Arbeitsspeicher, CPU, Speicher und Ephemeral Storage innerhalb des Clusters.

  • Pods müssen Ressourcen-Requests und Limits angeben, um eine faire Nutzung und Planung zu gewährleisten
  • Werden diese nicht angegeben, greift die Standard-LimitRange

hinweis

Der Plan begrenzt derzeit die kumulierten Ressourcenlimits über alle Pods hinweg, nicht die tatsächliche Ressourcennutzung. Wenn Pods nicht geplant werden können, sollten die einzelnen Pod-Limits reduziert werden, damit sie in das Kontingent des Plans passen.

Die aktuelle LimitRange lautet:

TypRessourceStandard-RequestStandard-Limit
Containermemory128Mi2Gi
Containercpu100m500m
Containerephemeral-storage500Mi6Gi

Löschen eines Virtual Clusters

Wenn ein Cluster nicht mehr benötigt wird:

  1. Zum Tab Managed Services navigieren.
  2. Auf Actions klicken und Delete für den zu entfernenden Cluster auswählen. Diese Aktion kann nicht widerrufen werden.
  3. Bestätigen und warten, bis der Cluster entfernt wurde. Virtual Cluster Löschung