Zum Hauptinhalt springen
API-Referenz

vCluster

note

Die Control Plane eines vClusters wird mit festen Ressourcen betrieben und skaliert nicht mit der Cluster-Grösse. Im Gegensatz zu regulären NKE-Clustern, bei denen die Control-Plane-Nodes bei steigender Last skaliert werden können, sind vCluster nicht für grosse Cluster oder Workloads mit einer hohen Anzahl an Kubernetes-Objekten (wie vielen Pods, CRDs oder Operatoren) und hohem API-Server-Traffic empfohlen.

Ein vCluster ist ein virtueller Kubernetes-Cluster auf Basis von vCluster, der auf der Nine Kubernetes Engine (NKE) ausgeführt wird. Er nutzt dieselbe zugrunde liegende Compute-, Storage- und Netzwerkinfrastruktur wie ein regulärer NKE-Cluster mit dedizierten Worker-Nodes, verwendet jedoch eine virtualisierte Control Plane anstelle dedizierter hochverfügbarer Control-Plane-Nodes.

Da für vCluster keine Cluster-Grundgebühr anfällt und die Bereitstellung weniger als zwei Minuten dauert, bieten sie eine kosteneffiziente Alternative zu regulären NKE-Clustern für nicht-produktive Workloads – mit Abstrichen bei Verfügbarkeitsgarantien (SLA), automatischen Backups und verwalteten Add-ons.

Anwendungsbereiche​

  • CI/CD-Pipelines: Durch die schnelle Erstellung und Löschung sowie die geringen Kosten eignen sich vCluster ideal für durchgängige End-to-End-Deployment-Tests in CI/CD-Pipelines.
  • Testen neuer Kubernetes-API-Versionen: Nine stellt neue Kubernetes-Releases frühzeitig in vCluster bereit, sodass du deine Applikationen gegen neue API-Versionen testen kannst, bevor du produktive Cluster aktualisierst.
  • Isolierte Entwicklungs- und Staging-Umgebungen: Betreibe eigene vCluster für Entwicklungs- und Staging-Umgebungen, um diese stärker als mit mehreren Namespaces auf einem einzelnen NKE-Cluster zu isolieren und gleichzeitig volle cluster-admin-Berechtigungen zu nutzen.

Funktionsvergleich​

Die folgende Tabelle vergleicht reguläre NKE-Cluster und vCluster:

FunktionNKEvCluster
Service-Typ LoadBalancer✓✓
Persistent Storage (RWO/RWX)✓✓
Ingress✓✓
Autoscaling✓✓
Argo CD-Integration✓✓
Static Egress✓✓
Service Connections✓✓
NKE-Maschinentypen✓✓
Dedizierte Worker-Nodes✓✓
Dedizierte, skalierbare HA Control Plane✓✗
Verwaltete Cluster-Add-ons✓✗
Automatisches Backup✓✗
Verfügbarkeitsgarantie (SLA)✓✗
Cluster-Grundgebühr✓✗
Schnelle Erstellungszeit (< 2 Minuten)✗✓
Volle cluster-admin-Rechte✗✓

Erste Schritte​

Du kannst einen vCluster über das Cockpit oder mit nctl erstellen.

  1. Melde dich im Cockpit an.
  2. Wähle Managed Kubernetes in der Produktübersicht aus.
  3. Klicke auf Add Cluster und wähle die Option vcluster.

Informationen zur Einrichtung des kubectl-Zugriffs findest du unter Cluster Login. Weitere Details zu verfügbaren Standorten, Maschinentypen, Load Balancing und Persistent Storage findest du in der Übersicht zur Nine Kubernetes Engine (NKE).

Argo CD​

Wenn du Applikationen mit Argo CD auf einem vCluster bereitstellst, vergibt die Namespace-Annotation nine.ch/argo-admin="true" (wie unter Argo CD Namespace-Erstellung beschrieben) nicht automatisch Berechtigungen. Da vCluster keine vollständig verwalteten Cluster sind, musst du dem Argo CD ServiceAccount die Berechtigungen manuell erteilen.

Führe die folgenden Schritte aus, um Argo CD cluster-admin-Berechtigungen auf deinem vCluster zu erteilen:

  1. Ermittle den Namen des Argo CD ServiceAccount im Namespace default:

    kubectl get serviceaccounts -n default

    Notiere dir den Namen des Service Accounts, der mit argocd- beginnt (beispielsweise argocd-xyz).

  2. Erstelle ein ClusterRoleBinding-Manifest mit dem Namen argocd-clusterrolebinding.yaml und ersetze <ARGOCD_SERVICE_ACCOUNT> durch den Namen des Service Accounts aus dem vorherigen Schritt:

    argocd-clusterrolebinding.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: argocd
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: cluster-admin
    subjects:
    - kind: ServiceAccount
    name: <ARGOCD_SERVICE_ACCOUNT>
    namespace: default
  3. Wende das Manifest auf deinen vCluster an:

    kubectl apply -f argocd-clusterrolebinding.yaml

Ingress​

Ein vCluster verwendet den Ingress-Controller des zugrunde liegenden Host-Clusters mit, sodass du keinen eigenen Ingress-Controller im vCluster bereitstellen musst.

Du findest die vordefinierte IngressClass und den Host in den Cluster-Details im Cockpit oder im API-Status unter status.atProvider.vcluster.defaultIngress. Bei Verwendung der IngressClass des Host-Clusters stehen dir zudem automatische TLS-Zertifikate von Let's Encrypt zur Verfügung. Details zur Konfiguration findest du unter Ingress-Nutzung.

Eigenen Ingress-Controller installieren​

Wenn du den vordefinierten Ingress-Controller des Host-Clusters nicht nutzen möchtest, kannst du einen eigenen Ingress-Controller innerhalb deines vClusters bereitstellen. Konfiguriere dabei einen eigenen IngressClass-Namen, damit kein Konflikt mit der vordefinierten IngressClass entsteht.

Metrics Server​

metrics-server ist in einem vCluster standardmässig nicht installiert. Daher funktionieren Befehle wie kubectl top sowie CPU- oder Memory-basierte Horizontal Pod Autoscaler (HPA) nicht ohne zusätzliche Konfiguration (siehe Automatische Skalierung der NKE-Last).

Da du innerhalb deines vClusters über vollständige cluster-admin-Berechtigungen verfügst, kannst du metrics-server selbst anhand der offiziellen Installationsanleitung für Metrics Server installieren und konfigurieren.