Virtuelle Cluster
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 Überblick.
Virtual Clusters ermöglichen die Ausführung von Kubernetes-Workloads innerhalb der Codesphere-Infrastruktur. Jeder Virtual Cluster stellt eine dedizierte Kubernetes-Umgebung für die Resource Group bereit und unterstützt Standard-Kubernetes-Workloads und -Tools.
Jeder Virtual Cluster ist isoliert, mit eigener Control Plane und eigenen Ressourcenlimits. Workloads können unabhängig und sicher von 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 ist für fortgeschrittene Nutzer mit Kubernetes-Erfahrung gedacht. Wenn kein direkter Zugriff auf Kubernetes-Primitive benötigt wird, empfiehlt sich die Verwendung anderer Codesphere Runtimes für einfachere Workflows.
Kompatibilität
Virtual Clusters bieten maximale Flexibilität bei der Bereitstellung eigener Workloads. Eigene Kubernetes-Abhängigkeiten können mitgebracht und vertraute Tools wie Helm Charts verwendet werden, um Anwendungen und Dienste mit minimalem Aufwand direkt im Codesphere-Ökosystem bereitzustellen.
tipp
Beispielsweise lässt sich Apache Superset in nur wenigen Schritten aus der Codesphere IDE oder der Landscape heraus direkt im Virtual Cluster bereitstellen:
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 in die Codesphere-Plattform integriert, wodurch sich Kubernetes-Workloads einfach 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 innerhalb der eigenen Cloud-Infrastruktur.

Entsprechende 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 Anwendungen und Dienste direkt aus den Codesphere Workspaces heraus angesprochen werden können, was Entwicklung und Fehlerbehebung effizienter macht.
info
Um auf einen im Virtual Cluster laufenden Dienst zuzugreifen, benötigt man Folgendes:
- Den Ressourcennamen (z. B. superset)
- Den Namespace-Namen (z. B. default)
- Die Codesphere Resource Group ID (z. B. 180312) Mit diesen Informationen lässt sich der Dienst ü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 ebenfalls auf andere Codesphere-Ressourcen zugreifen, wie Landscapes und Managed Services (zum Beispiel Managed Postgres) innerhalb derselben Resource Group. Dies erleichtert den Aufbau komplexer, aus mehreren Diensten bestehender Anwendungen, die sowohl Kubernetes als auch die Lösungen von Codesphere umfassen.
info
Um von einem Virtual Cluster aus auf einen Workspace-Reactive zuzugreifen, wird Folgendes benötigt:
- Der Name des Landscape-Reactive-Dienstes
- Die ID des Workspace, in dem der Reactive bereitgestellt ist Anschließend lässt sich folgendes URL-Format verwenden:
http://ws-server-[WORKSPACE_ID]-[REACTIVE_NAME].workspaces
Mögliche Anwendungsfälle
- Bereitstellung von Superset als Helm Chart
- Bereitstellung von Grafana mit Anbindung an einen in Codesphere laufenden Managed-Postgres-Dienst
- Bereitstellung von Prometheus mit Anbindung an in Codesphere laufende Anwendungen zur Überwachung benutzerdefinierter Metriken
- Hinzufügen einer Custom Resource Definition und von Controllern (z. B. JSPolicy)
Cluster-Zugriff
Der primäre Weg zur Interaktion mit dem Virtual Cluster erfolgt über die kubeconfig-Datei, die direkt in das Dateisystem des Workspace eingebunden wird. Diese Konfigurationsdatei ermöglicht die Verwendung von kubectl- und helm-Befehlen direkt im Workspace-Terminal sowie in den Ausführungsschritten der Landscape.
Die Konfigurationsdatei wird automatisch als ~/.kube/config in das Dateisystem des Workspace eingebunden. kubectl und helm verwenden sie standardmäßig als Konfigurationsdatei für die Verbindung zum Virtual Cluster.
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:
- Die Liste der Workspace-Umgebungsvariablen wird geändert
- Der Workspace wird gestartet
- Workspace-Ressourcen werden aktualisiert (z. B. Plan wird geändert, Landscape wird synchronisiert)
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 vorübergehend das Ändern einer Umgebungsvariable oder das (Neu-)Starten des Workspace helfen, 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 benutzerdefinierten Images sollte sichergestellt werden, dass diese Abhängigkeiten vorhanden sind, falls eine Interaktion mit dem Virtual Cluster gewünscht ist.
Verwaltung von Clustern
Virtual Clusters stehen als Managed Service in Codesphere zur Verfügung. Der Lebenszyklus der Cluster wird über die Managed-Services-Oberfläche verwaltet, über die Cluster nach Bedarf erstellt, aktualisiert und gelöscht werden können.
Weitere Details finden sich in der Managed-Services-Dokumentation.
Erstellen eines Virtual Clusters
info
Aktuell kann jede Resource Group aufgrund der Namespace-Beschränkungen der Resource Group nur einen Virtual Cluster besitzen. Bevor ein neuer Cluster erstellt wird, sollte geprüft werden, ob die Resource Group bereits einen enthält.
Um einen Virtual Cluster zu erstellen, folgende Schritte ausführen:
- Den Tab Managed Services im Codesphere Workspace öffnen.
- Virtual Kubernetes Cluster aus dem Servicekatalog auswählen. Mit dieser Option lässt sich ein neuer Cluster für das Team einrichten.
- Einen Namen eingeben und den Plan entsprechend den Anforderungen konfigurieren:
- vCPU
- Arbeitsspeicher
- Speicher
- Ephemeral Storage

- Bestätigen und warten, bis der Cluster bereit ist. Die Bereitstellung kann einen Moment dauern.

Ändern des Virtual Clusters
- Den Tab Managed Services öffnen.
- Auf Settings klicken und den Tab Configuration für den Cluster öffnen.
- Auf Edit Configuration klicken und die Planwerte nach Bedarf anpassen.

- Bestätigen und warten, bis die Änderungen wirksam werden. Der Cluster passt seine Ressourcen entsprechend an.
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
- Wenn ein Pod diese nicht angibt, wird die Standard-LimitRange angewendet
hinweis
Der Plan begrenzt derzeit die akkumulierten Ressourcenlimits über alle Pods hinweg, nicht die tatsächliche Ressourcennutzung. Wenn Pods nicht geplant werden können, sollten die Limits einzelner Pods reduziert werden, um in das Kontingent des Plans zu passen.
Die aktuelle LimitRange lautet:
| Typ | Ressource | Standard-Request | Standard-Limit |
|---|---|---|---|
| Container | memory | 128Mi | 2Gi |
| Container | cpu | 100m | 500m |
| Container | ephemeral-storage | 500Mi | 6Gi |
Löschen eines Virtual Clusters
Wird ein Cluster nicht mehr benötigt:
- Den Tab Managed Services öffnen.
- Auf Actions klicken und Delete für den zu entfernenden Cluster auswählen. Diese Aktion kann nicht widerrufen werden.
- Bestätigen und warten, bis der Cluster entfernt wurde.
