CSI-Treiber für Cloud Storage FUSE für GKE


Diese Übersicht stellt den Cloud Storage FUSE-CSI-Treiber zum Bereitstellen von Cloud Storage-Buckets als lokale Dateisysteme in Google Kubernetes Engine (GKE) vor. Diese Funktion ist besonders nützlich für Machine-Learning-Arbeitslasten, bei denen Trainingsdaten, Modelle und Prüfpunkte in Cloud Storage gespeichert werden müssen.

Diese Übersicht richtet sich an Entwickler und Data Scientists, die über ihre Kubernetes-Anwendungen auf Trainingsdaten, Gewichte von Inferenzmodellen und Prüfpunkte zugreifen oder diese in Cloud Storage speichern möchten.

Machen Sie sich vor dem Lesen dieser Seite mit Kubernetes, GKE und Cloud Storage vertraut.

Funktionsweise

Der Treiber verwendet den Container Storage Interface-Standard (CSI), damit Ihre Anwendungen, die in Pods ausgeführt werden, nahtlos auf Cloud Storage-Buckets zugreifen können, als wären sie bereitgestellte Dateisysteme. Das bedeutet, dass Sie Ihre Cloud Storage-Buckets ohne komplexe Konfiguration oder Codeänderungen als dauerhafte und skalierbare Datenquelle für Ihre Kubernetes-Anwendungen verwenden können.

Der CSI-Treiber für Cloud Storage FUSE bietet eine vollständig verwaltete Umgebung, die auf dem Open-Source-Google Cloud Storage FUSE-CSI-Plug-in basiert. Mit dem CSI-Treiber können Sie die Kubernetes API verwenden, um bereits vorhandene Cloud Storage-Buckets als Volumes zu nutzen. Ihre Anwendungen können Objekte mithilfe der Cloud Storage FUSE-Dateisystemsemantik hochladen und herunterladen.

Filesystem in Userspace (FUSE) ist eine Schnittstelle zum Exportieren eines Dateisystems in den Linux-Kernel. Mit Cloud Storage FUSE können Sie Cloud Storage-Buckets als Dateisystem bereitstellen, sodass Anwendungen über gängige Datei-E/A-Vorgänge auf die Objekte in einem Bucket zugreifen können (z. B. Öffnen, Lesen, Schreiben, Schließen anstatt Cloud-spezifische APIs.

Der Treiber unterstützt nativ die folgenden Möglichkeiten zur Konfiguration Ihrer Cloud Storage-gestützten Volumes:

  • Sitzungsspezifische CSI-Volumes: Sie geben den Cloud Storage-Bucket inline mit der Pod-Spezifikation an. Verwenden Sie sitzungsspezifische CSI-Volumes, wenn Sie eine optimierte Pod-basierte Schnittstelle benötigen, für die keine Vorkenntnisse mit persistenten Kubernetes-Volumes erforderlich sind. Informationen zur Verwendung dieser Option finden Sie unter Cloud Storage-Buckets als ephemere CSI-Volumes bereitstellen.
  • PersistentVolumes: Sie erstellen eine PersistentVolume-Ressource, die auf den Cloud Storage-Bucket verweist, indem Sie die statische Bereitstellung verwenden. Ihr Pod kann dann auf einen PersistentVolumeClaim verweisen, der an dieses PersistentVolume gebunden ist. Verwenden Sie diese Option, wenn Sie bereits mit PersistentVolumes vertraut sind und Konsistenz mit Ihren vorhandenen Bereitstellungen wünschen, die auf diesem Ressourcentyp basieren. Informationen zur Verwendung dieser Option finden Sie unter Cloud Storage-Buckets als persistente Volumes bereitstellen.

Anwendungsfälle

Der CSI-Treiber für Cloud Storage FUSE eignet sich für die folgenden Szenarien:

KI und Machine Learning

  • Training: Mit dem Cloud Storage FUSE CSI-Treiber können Sie Trainingsdaten lesen und gespeicherte Modelle mit Cloud Storage als Source of Truth prüfen. Wenn Sie beispielsweise ein Modell in GKE mit PyTorch, JAX oder TensorFlow trainieren, kann der Treiber Zugriff auf Trainingsdatasets ermöglichen, die in Cloud Storage-Buckets gespeichert sind.
  • Inferenz: Sie können ML-Inferenzmodelle bereitstellen, die Ergebnisse aus Dateien ableiten, die in Cloud Storage gespeichert sind. Mit Cloud Storage FUSE CSI können Sie in Cloud Storage gespeicherte Modellgewichte vorab laden. Außerdem können Sie den parallelen Download mit dem Dateicache verwenden, um das Lesen großer Dateien aus Cloud Storage für Downloads mit mehreren Threads zu beschleunigen. Mit dieser Funktion können Sie die Ladezeiten von Modellen verbessern, insbesondere bei Lesevorgängen von mehr als 1 GB.

Datenanalyse-Pipelines

Mit dem Cloud Storage FUSE CSI-Treiber können Sie die Datenverarbeitung optimieren, da Anwendungen direkt auf große Datasets zugreifen und diese analysieren können, die in Cloud Storage gespeichert sind. Ein Spark-Job, der in GKE ausgeführt wird, kann beispielsweise den CSI-Treiber verwenden, um in Cloud Storage gespeicherte Daten zu verarbeiten, ohne sie zuerst herunterladen zu müssen.

Vorteile

Die Verwendung des CSI-Treibers bietet folgende Vorteile:

  • Einfache Einrichtung: Der Cloud Storage FUSE CSI-Treiber stellt den Treiber automatisch in Standard- und Autopilot-Clustern bereit und verwaltet ihn. Die Verwendung von sitzungsspezifischen CSI-Volumes vereinfacht die Konfiguration und Verwaltung von Volumes. Das liegt daran, dass keine PersistentVolumeClaim- und PersistentVolume-Objekte erforderlich sind.
  • Sicherheit: Der Cloud Storage FUSE CSI-Treiber benötigt keinen privilegierten Zugriff. So werden die Risiken, die mit privilegiertem Zugriff verbunden sind, minimiert und die Sicherheitslage verbessert. Sie können Workload Identity Federation for GKE verwenden, um die Authentifizierung zu verwalten und gleichzeitig genau zu steuern, wie Ihre Pods auf Cloud Storage-Objekte zugreifen.
  • Leistung: Der Cloud Storage FUSE CSI-Treiber verbessert die Leistung durch Funktionen wie einen Sidecar für optimierte Interaktionen, parallele Downloads für schnelleren Datenzugriff sowie Metadaten- und Datei-Caching zur Verbesserung der Leseleistung und zur Reduzierung der Latenz. Weitere Informationen zu diesen Funktionen finden Sie unter Optionen und Funktionen zur Leistungsoptimierung.
  • Übertragbarkeit und Flexibilität:Mit dem CSI-Treiber für Cloud Storage FUSE können Sie Cloud Storage-Buckets mit der Standardsemantik des Dateisystems bereitstellen und darauf zugreifen. Dies bietet eine vertraute Schnittstelle, die die Portabilität von ML-Arbeitslasten verbessert und umfangreiche Code- oder Anwendungsänderungen vermeidet. Der Treiber wird auf allen in GKE verfügbaren Beschleunigern unterstützt, einschließlich GPUs und TPUs. Der Cloud Storage FUSE CSI-Treiber unterstützt die Zugriffsmodi ReadWriteMany, ReadOnlyMany und ReadWriteOnce. Sie können Cloud Storage FUSE-Volumes in Init-Containern verwenden.
  • Verwaltbarkeit: Mit dem Treiber können Sie Cloud Storage FUSE im Hintergrund ausführen, ohne es installieren oder verwalten zu müssen. Sie können auch Messwertstatistiken für Cloud Storage FUSE aufrufen, einschließlich der Nutzung von Dateisystem, Cloud Storage und Dateicache.

Optionen und Funktionen zur Leistungsoptimierung

Der Cloud Storage FUSE CSI-Treiber bietet mehrere Optionen zur Leistungsoptimierung und Funktionen zum Optimieren des Zugriffs Ihrer Pods auf Daten, die in Cloud Storage-Buckets gespeichert sind.

Wenn Sie beispielsweise das Dateicaching aktivieren und die Anzahl der gleichzeitigen Anfragen anpassen, können Sie die Zeit, die zum Laden der Trainingsdaten benötigt wird, erheblich verkürzen und so die Trainingszeiten beschleunigen.

  • Nativer Sidecar: Der Cloud Storage FUSE-CSI-Treiber hängt einen Sidecar-Container an Ihre Pods an, um die Interaktionen mit Cloud Storage zu verwalten. Der Sidecar-Container übernimmt das Einbinden und die Interaktion mit Cloud Storage, sodass Ihre Anwendungen nahtlos auf Daten zugreifen können. Sie können die Leistung optimieren, indem Sie Ressourcen wie CPU und Arbeitsspeicher für den Sidecar-Container konfigurieren oder Einstellungen für das Caching und Buffering anpassen. Der Sidecar-Container für den Cloud Storage FUSE CSI-Treiber und Istio können gleichzeitig in Ihrem Pod ausgeführt werden.

  • Paralleler Download: Ab GKE-Version 1.30.3-gke.1571000 und Cloud Storage FUSE v.2.4.0 mit aktiviertem Dateicache können Sie das Feature für parallele Downloads verwenden, um das Lesen großer Dateien aus Cloud Storage für Downloads mit mehreren Threads zu beschleunigen. Mit dieser Funktion können Sie die Ladezeiten von Modellen verbessern, insbesondere bei Lesevorgängen von mehr als 1 GB (z. B. bis zu doppelt so schnell beim Laden von Llama 2 70B).

  • Unterstützung für Metadaten-Caching: Der Cloud Storage FUSE CSI-Treiber verbessert die Leistung durch das Caching von Dateimetadaten wie Größe und Änderungszeit. Der CSI-Treiber aktiviert diesen Stat-Cache standardmäßig und reduziert die Latenz, indem er Informationen lokal speichert, anstatt sie wiederholt von Cloud Storage anzufordern. Sie können die maximale Größe und die Dauer konfigurieren, für die die Daten im Cache verbleiben. Durch die Feinabstimmung des Metadaten-Caches können Sie API-Aufrufe an Google Cloud Storage reduzieren und so die Anwendungsleistung und ‑effizienz verbessern, indem Sie Netzwerktraffic und Latenz minimieren.

  • Unterstützung für Datei-Caching: Sie können den Cloud Storage FUSE-CSI-Treiber mit Datei-Caching verwenden, um die Leseleistung von Anwendungen zu verbessern, die kleine Dateien aus Cloud Storage-Buckets verarbeiten. Das Datei-Cache-Feature von Cloud Storage FUSE ist ein clientbasierter Lese-Cache, mit dem Dateilesevorgänge wiederholt werden können, um sie schneller von einem Cache-Speicher Ihrer Wahl bereitzustellen. Je nach Ihren Preis-Leistungs-Anforderungen können Sie aus einer Reihe von Speicheroptionen für den Lesecache auswählen, darunter lokale SSDs, Persistent Disk-basierter Speicher und RAM-Laufwerk.

  • Unterstützung für Neustart von Knoten: Ab GKE-Version 1.33.1-gke.1959000 können Pods, die GCSFuse-CSI-Volumes verwenden, nach einem Neustart eines GKE-Knotens automatisch wiederhergestellt werden. Bei Clustern mit früheren Versionen können Pods nicht wiederhergestellt werden und Sie müssen sie neu bereitstellen.

Best Practices zur Leistungsoptimierung finden Sie unter CSI-Treiber für Cloud Storage FUSE für GKE-Leistung optimieren.

Beschränkungen

Für den CSI-Treiber gelten die folgenden Einschränkungen:

  • Das Cloud Storage FUSE-Dateisystem unterscheidet sich im Vergleich zu einem POSIX-Dateisystem über Leistung, Verfügbarkeit, Zugriffsautorisierung und Semantik.
  • Der Cloud Storage FUSE CSI-Treiber wird in GKE Sandbox nicht unterstützt.
  • Der Cloud Storage FUSE CSI-Treiber unterstützt keine Volume-Snapshots, Volume-Klonen oder Volume-Erweiterungen.
  • Bei der Verwendung der Identitätsföderation von Arbeitslasten für GKE ist für Lese-/Schreib-Arbeitslasten einheitlicher Zugriff auf Bucket-Ebene erforderlich.
  • Sehen Sie sich die bekannten Probleme im GitHub-Projekt des Cloud Storage FUSE CSI-Treibers an.
  • Sehen Sie sich die offenen Probleme im GitHub-Projekt des Cloud Storage FUSE CSI-Treibers an.
  • Der Cloud Storage FUSE CSI-Treiber unterstützt aufgrund von Einschränkungen der Workload Identity Federation for GKE keine Pods, die im Hostnetzwerk (hostNetwork: true) ausgeführt werden.
  • Bei GKE-Clusterversionen vor 1.32.3-gke.1099000 gilt ein restriktives Limit für die Größe von JSON-verschlüsselten mountOption-Strings. Die Kombination aus Bucket-Name, vom Nutzer angegebenen Mount-Optionen und dem vom Treiber bereitgestellten mountOptions darf maximal 500 Zeichen umfassen. Wir haben den Grenzwert für JSON-Nachrichten in GKE-Clusterversionen 1.32.3-gke.1099000 oder höher auf 5.000 Byte erhöht.

Voraussetzungen

Damit Sie den CSI-Treiber für Cloud Storage FUSE verwenden können, müssen Ihre Cluster die folgenden GKE-Versionsanforderungen erfüllen:

Wenn Sie bestimmte Funktionen des CSI-Treibers für Cloud Storage FUSE verwenden möchten, müssen Sie auch die folgenden Anforderungen erfüllen:

Feature GKE-Versionsanforderungen
Privates Image für Sidecar-Container, benutzerdefiniertes Schreib-Zwischenspeicher-Volume und Ressourcenanforderungen für Sidecar-Container 1.27.10-gke.1055000, 1.28.6-gke.1369000, 1.29.1-gke.1575000 oder höher.
Dateicache, Volume-Attribute 1.27.12-gke.1190000, 1.28.8-gke.1175000, 1.29.3-gke.1093000 oder höher.
Cloud Storage FUSE-Volumes in Init-Containern 1.29.3-gke.1093000 oder höher, wobei alle Knoten die GKE-Version 1.29 oder höher verwenden.
Paralleler Download 1.29.6-gke.1254000, 1.30.2-gke.1394000 oder höher.
Cloud Storage FUSE-Messwerte 1.31.1-gke.1621000 oder höher, standardmäßig aktiviert in 1.33.0-gke.2248000 oder höher.
Prefetching von Metadaten 1.32.1-gke.1357001 oder höher.
Streaming-Schreibvorgänge 1.32.1-gke.1753001 oder höher, standardmäßig aktiviert in 1.33.2-gke.4655000 oder höher.
Kernel-Read-Ahead konfigurieren 1.32.2-gke.1297001 oder höher.
Unterstützung für Neustart von Knoten 1.33.1-gke.1959000 oder höher.

Nächste Schritte