Zum Hauptinhalt springen
Version: Weekly Build

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.

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

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:

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

  1. Der Name des Landscape-Reactive-Dienstes
  2. 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

  1. Bereitstellung von Superset als Helm Chart
  2. Bereitstellung von Grafana mit Anbindung an einen in Codesphere laufenden Managed-Postgres-Dienst
  3. Bereitstellung von Prometheus mit Anbindung an in Codesphere laufende Anwendungen zur Überwachung benutzerdefinierter Metriken
  4. 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:

  1. Die Liste der Workspace-Umgebungsvariablen wird geändert
  2. Der Workspace wird gestartet
  3. 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:

  1. Den Tab Managed Services im Codesphere Workspace öffnen.
  2. Virtual Kubernetes Cluster aus dem Servicekatalog 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 einen Moment dauern. Virtual Cluster synchronisiert

Ändern des Virtual Clusters

  1. Den Tab Managed Services öffnen.
  2. Auf Settings klicken und den Tab Configuration für den Cluster öffnen.
  3. Auf Edit Configuration klicken und die Planwerte nach Bedarf anpassen. Virtual Clusters Konfiguration bearbeiten
  4. 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:

TypRessourceStandard-RequestStandard-Limit
Containermemory128Mi2Gi
Containercpu100m500m
Containerephemeral-storage500Mi6Gi

Löschen eines Virtual Clusters

Wird ein Cluster nicht mehr benötigt:

  1. Den Tab Managed Services öffnen.
  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