DIgilife - stock.adobe.com

Installationstipps für vSphere CSI-Treiber auf lokalem Storage

Mit dem vSphere CSI-Treiber bringen Sie automatisiertes Storage Provisioning ins eigene Kubernetes-Cluster. Wir geben Tipps, wie Sie vSphere-Volumes flexibel und effizient nutzen.

Ein Treiber für Container Storage Interface (CSI) ist eine standardisierte Schnittstelle, über die Container-Orchestrierungsplattformen wie Kubernetes mit verschiedenen Speichersystemen kommunizieren können. Damit werden block- und dateibasierter Speicher für containerisierte Anwendungen zugänglich gemacht.

Die Integration von VMware vSphere Storage in Kubernetes mittels CSI-Treiber ist gerade für On-Premises-Umgebungen ein wichtiger Schritt zur Automatisierung und Flexibilisierung von Volume-Verwaltung. Im Folgenden erfahren Sie Schritt für Schritt, wie Sie den vSphere-CSI-Treiber in einer lokalen Infrastruktur implementieren und konfigurieren.

vSphere und Kubernetes: Basis für dynamisches Storage

Bevor Sie mit der Installation des CSI-Treibers beginnen, ist es essenziell, die Verbindung zwischen Kubernetes und vSphere zu verstehen und korrekt herzustellen. Das Cloud Provider Interface (CPI) verknüpft die Nodes Ihres Kubernetes-Clusters eindeutig mit Ihrem vSphere-System. Hierfür wird bei jeder Node eine ProviderID hinterlegt. Erst damit ist Kubernetes in der Lage, Storage-Anfragen automatisiert an vSphere weiterzuleiten und die Infrastruktur zu koordinieren. Das CPI muss deshalb immer installiert und erfolgreich im Cluster ausgerollt sein, bevor Sie mit der CSI-Integration starten. Allerdings kann seit den Versionen vSphere 7u3 und CSI 2.5+ vernachlässigt werden, wenn der vSphere Supervisor zum Einsatz kommt, der wiederum ein Kernelement von vSphere mit Tanzu ist. Nutzen Sie die Community-Version Vanilla Kubernetes, dann ist das CPI nach wie vor unerlässlich. Vanilla Kuberntes ist die absolute Basisform und reinste Version von Kubernetes, ohne jegliche Modifizierungen oder Ergänzungen und wird von der Community gepflegt.

Der CSI-Treiber wiederum ist die operative Schnittstelle, über die Storage-Operationen (wie Provisionierung, Löschung, Verbinden von Volumes) von Kubernetes direkt in vSphere ausgeführt werden. Für Ihre Anwendungen bedeutet das: Kubernetes kann persistenten Storage auf Basis von vSphere-Policies oder Datastores bereitstellen, ohne dass manuell eingegriffen werden muss. Alle Operationen werden von CSI automatisiert umgesetzt.

Voraussetzungen prüfen

Bevor Sie starten, vergewissern Sie sich, dass Ihr Setup die grundlegenden Bedingungen erfüllt. Dabei kommt es vor allem auf die Kompatibilität von Kubernetes und vSphere, ausreichende Nutzerrechte und funktionierende Netzwerke zwischen allen Komponenten an.

  • vSphere 7.0 (oder ab 6.7U3; neuere Features erfordern vSphere ≥7.0)
  • Kubernetes-Cluster ab Version 1.17 (empfohlen ab 1.22)
  • vCenter-Zugriff mit Nutzerrechten für Storage-Operationen
  • Netzwerkfreigabe zwischen Cluster-Nodes und vCenter
  • Keine veralteten Storage-Provider für vSphere im Cluster

Schritt 1: Cloud Provider Interface (CPI) installieren

Das CPI sorgt dafür, dass die Kubernetes-Nodes im Cluster eindeutig mit vSphere verknüpft werden – eine Voraussetzung für die erfolgreiche CSI-Integration. Holen Sie die aktuellen CPI-Manifeste (zum Beispiel aus dem GitHub-Repo), passen Sie vCenter-Adresse und Zugangsdaten an und installieren Sie sie im Cluster:

kubectl apply -f cloud-provider-vsphere.yaml

Prüfen Sie danach, ob alle Nodes eine ProviderID besitzen, damit die CSI-Komponenten später korrekt arbeiten können. Die ProviderID gilt als Kontrollpunkt für eine erfolgreiche Integration.

Schritt 2: CSI-Konfiguration vorbereiten

Bevor der CSI-Treiber deployed werden kann, müssen die Zugangsdaten für vSphere und spezifische Einstellungen als Secret im Cluster hinterlegt werden. Dazu erstellen Sie eine Konfigurationsdatei csi-vsphere.conf und wandeln diese in ein Secret im Namespace kube-system um:

[Global]
cluster-id = "kubernetes-cluster-id"

[VirtualCenter "<VCENTER-FQDN>"]
user = "[email protected]"
password = "<VSPHERE-PASSWORT>"
datacenters = "<DATACENTER-NAME>"
insecure-flag = "1"
kubectl create secret generic vsphere-config-secret \
  --from-file=csi-vsphere.conf=./csi-vsphere.conf \
  -n kube-system

Das Secret stellt sicher, dass die CSI-Komponenten im Cluster Zugriff auf Ihr Storage-Backend erhalten.

Zu beachten ist, dass dieser Befehl abweichen kann, wenn eine ältere CSI-Version als 3.0 verwendet wird. In dem Fall sieht die obere Eingabe wie folgt aus.

[Global]
user = "[email protected]"
password = "<VSPHERE-PASSWORT>"
server = "<VCENTER-FQDN>"
datacenters = "<DATACENTER-NAME>"
insecure-flag = "1"

Schritt 3: vSphere-CSI-Treiber installieren

Nun ist der eigentliche CSI-Treiber an der Reihe. Die Installationsmanifeste sind im offiziellen vSphere CSI GitHub-Repository zu finden; achten Sie darauf, die zur Kubernetes-Version passende Variante zu wählen. Die Manifeste deployen Controller und Node-Plug-in für die CSI-Schnittstelle:

kubectl apply -f vsphere-csi-controller-deployment.yaml
kubectl apply -f vsphere-csi-node-daemonset.yaml

Vollständige Manifeste aus dem Repository werden mit einem einzigen Apply-Befehl installiert, der zum Beispiel so aussehen kann.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/vsphere-csi-driver/v3.0.0/manifests/vanilla/vsphere-csi-driver.yaml

Das reduziert Fehler und stellt sicher, dass Controller, Node und RBAC (Role-Based Access Control) passen.

Nach erfolgreicher Installation sollten die CSI-Pods im Namespace kube-system laufen und die Volumes bereitstellen können.

Schritt 4: StorageClass für vSphere erstellen

Mit dem CSI-Treiber im Cluster wird nun die StorageClass notwendig, um Kubernetes mitzuteilen, wie und wo Storage-Volumes angelegt werden. Legen Sie eine StorageClass an, die auf den vSphere-CSI-Treiber verweist und optional Policies berücksichtigt:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: vsphere-sc
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "Gold Policy" # Oder leer, je nach Policy
kubectl apply -f storageclass.yaml

Der Parameter storagepolicyname kann verwendet werden, um bestimmte Storage-Richtlinien in vSphere einzubinden. Alternativ kann man statt storagepolicyname auch datastore direkt angeben. Dies ist nützlich in einfachen lokalen Setups ohne SPBM-Policies (Storage Policy-Based Management), ein Framework, mit dem der Admin die Speicherrichtlinien definiert. Dazu gehören unter anderem Speicherleistung oder Verfügbarkeit.

Schritt 5: PersistentVolumeClaim testen

Um die Funktion Ihres neuen Setups zu prüfen, legen Sie einen PVC (Persistent Volume Claim) an, der mit der StorageClass verknüpft ist. Damit wird ein Volume im vSphere-Backend automatisch bereitgestellt:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: vsphere-sc
  resources:
    requests:
      storage: 10Gi
kubectl apply -f pvc.yaml

Mit diesem Schritt wird erstmals ein Kubernetes-Volume direkt über den CSI-Treiber auf vSphere provisioniert. Zusätzlich lässt sich ein weiterer Befehl nutzen, um CSI-Events und die Volume-Bereitstellung überprüfen:

kubectl describe pvc test-pvc
kubectl logs -n kube-system -l app=vsphere-csi-controller

Schritt 6: Funktion überprüfen

Nachdem alle Komponenten installiert und konfiguriert sind, empfiehlt es sich, die korrekte Integration und Funktionsfähigkeit des CSI-Treibers zu kontrollieren. So stellen Sie sicher, dass Kubernetes und vSphere wie gewünscht zusammenarbeiten und Storage-Vorgänge automatisiert verarbeitet werden:

  • Sind die CSI-Pods und PVC im Status Running beziehungsweise Bound?
  • Wird der StorageClass unter kubectl get storageclass korrekt gelistet?
  • Zeigen kubectl get csinode die CSI-Treiber überall an?
  • Wird das Volume im vSphere Web-Client unter Cloud Native Storage angezeigt?

Damit steht Ihnen eine automatische Provisionierung und Verwaltung von persistenten Volumes im lokalen Rechenzentrum zur Verfügung.

Auf einen Blick: vSphere CSI-Treiber auf Kubernetes installieren

Die Installation des vSphere CSI-Treibers in lokalen Kubernetes-Clustern ermöglicht ein automatisiertes und effizientes Provisionieren sowie Verwalten von persistentem Storage auf Basis von VMware vSphere. Entscheidende Voraussetzung ist die korrekte Verbindung zwischen vSphere und Kubernetes über das Cloud Provider Interface (CPI). Nach Anlage des Konfigurations-Secrets und Deployment der CSI-Komponenten kann der Storage durch geeignete StorageClasses und PersistentVolumeClaims dynamisch aus Kubernetes heraus genutzt werden. Die abschließende Funktionsprüfung bestätigt die erfolgreiche Integration beider Systeme. Damit steht ein stabiles Fundament für die Storage-Automatisierung im Rechenzentrum zur Verfügung.

 

Erfahren Sie mehr über Storage und Virtualisierung