In dieser Übersicht wird der CSI-Treiber Cloud Storage FUSE vorgestellt, mit dem Cloud Storage-Buckets als lokale Dateisysteme in der Google Kubernetes Engine (GKE) bereitgestellt werden können. Diese Funktion ist besonders nützlich für Arbeitslasten für maschinelles Lernen, bei denen Trainingsdaten, Modelle und Checkpoints 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 in Cloud Storage gespeicherte Checkpoints zugreifen oder diese speichern möchten.
Machen Sie sich vor dem Lesen dieser Seite mit Kubernetes, GKE und Cloud Storage vertraut.
So funktioniert es
Der Treiber verwendet den Standard Container Storage Interface (CSI), damit Ihre in Pods ausgeführten Anwendungen nahtlos auf Cloud Storage-Buckets zugreifen können, als wären es bereitgestellte Dateisysteme. So können Sie Ihre Cloud Storage-Buckets als persistente und skalierbare Datenquelle für Ihre Kubernetes-Anwendungen verwenden, ohne komplexe Konfigurations- oder Codeänderungen vornehmen zu müssen.
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 podbasierte Benutzeroberfläche benötigen, für die keine Vorkenntnisse mit Kubernetes-persistenten Volumes erforderlich sind. Informationen zur Verwendung dieser Option finden Sie unter Cloud Storage-Buckets als CSI-sitzungsspezifische Volumes bereitstellen.
- PersistentVolumes Sie erstellen eine PersistentVolume-Ressource, die mithilfe der statischen Bereitstellung auf den Cloud Storage-Bucket verweist. 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 für Ihre vorhandenen Bereitstellungen, die auf diesem Ressourcentyp basieren, für Einheitlichkeit sorgen möchten. Weitere Informationen zur Verwendung dieser Option finden Sie unter Cloud Storage-Buckets als nichtflüchtige Volumes bereitstellen.
Anwendungsfälle
Der CSI-Treiber für Cloud Storage FUSE eignet sich für folgende Szenarien:
KI und Machine Learning
- Training: Mit dem Cloud Storage FUSE CSI-Treiber können Sie Trainingsdaten und gespeicherte Modelle mit Cloud Storage als „Source of Truth“ lesen. Wenn Sie beispielsweise ein Modell mit PyTorch, JAX oder TensorFlow in GKE trainieren, kann der Treiber Zugriff auf Trainingsdatasets gewähren, die in Cloud Storage-Buckets gespeichert sind.
- Inferenz: Sie können ML-Inferenzmodelle bereitstellen, die Ergebnisse aus in Cloud Storage gespeicherten Dateien ableiten. Mit Cloud Storage FUSE CSI können Sie in Cloud Storage gespeicherte Modellgewichte vorab laden. Außerdem können Sie die Funktion paralleler Download 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 Modellladezeiten verbessern, insbesondere bei Lesevorgängen von mehr als 1 GB.
Pipelines für die Datenanalyse
Mit dem Cloud Storage FUSE CSI-Treiber können Sie die Datenverarbeitung optimieren, indem Sie Anwendungen den direkten Zugriff auf große in Cloud Storage gespeicherte Datensätze ermöglichen. So kann beispielsweise ein Spark-Job, der in GKE ausgeführt wird, 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 wird sowohl in Standard- als auch in Autopilot-Clustern automatisch bereitgestellt und verwaltet. 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 mit einem privilegierten Zugriff verbundenen Risiken minimiert und die Sicherheit verbessert. Sie können die Workload Identity-Föderation für GKE verwenden, um die Authentifizierung zu verwalten und 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, um die Leseleistung zu verbessern und die Latenz zu reduzieren. Weitere Informationen zu diesen Funktionen finden Sie unter Optionen und Funktionen zur Leistungsoptimierung.
- Portabilität und Flexibilität: Mit dem Cloud Storage FUSE CSI-Treiber können Sie Cloud Storage-Buckets mit der Standardsemantik des Dateisystems bereitstellen und darauf zugreifen.
Dies bietet eine vertraute Benutzeroberfläche, die die Portabilität von ML-Arbeitslasten verbessert und umfangreiche Code- oder Anwendungsänderungen verhindert.
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
undReadWriteOnce
. 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 ihn installieren oder verwalten zu müssen. Außerdem können Sie Messwertstatistiken für Cloud Storage FUSE aufrufen, darunter die Nutzung des Dateisystems, von Cloud Storage und des Dateicaches.
Optionen und Funktionen zur Leistungsoptimierung
Der Cloud Storage FUSE CSI-Treiber bietet mehrere Optionen zur Leistungsoptimierung und Funktionen zur Optimierung des Zugriffs Ihrer Pods auf in Cloud Storage-Buckets gespeicherte Daten.
Wenn Sie beispielsweise das Datei-Caching aktivieren und die Parallelität von Anfragen anpassen, können Sie die Zeit zum Laden der Trainingsdaten erheblich reduzieren, was zu kürzeren Trainingszeiten führt.
Nativer Sidecar: Der Cloud Storage FUSE CSI-Treiber hängt einen Sidecar-Container in Ihren Pods an, um Interaktionen mit Cloud Storage zu verwalten. Der Sidecar kümmert sich um das Bereitstellen 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 die Einstellungen für Caching und Pufferung anpassen. Der Sidecar-Container des Cloud Storage FUSE CSI-Treibers und Istio können nebeneinander existieren und gleichzeitig in Ihrem Pod ausgeführt werden.
Paralleler Download: Ab der GKE-Version 1.30.3-gke.1571000 und Cloud Storage FUSE v.2.4.0 mit aktiviertem Dateicache können Sie mit der Funktion paralleler Download das Lesen großer Dateien aus Cloud Storage für Downloads mit mehreren Threads beschleunigen. Mit dieser Funktion können Sie die Modellladezeiten verbessern, insbesondere bei Lesevorgängen von mehr als 1 GB. So ist das Laden von Llama 2 70B beispielsweise bis zu doppelt so schnell.
Unterstützung für das Metadaten-Caching: Der Cloud Storage FUSE CSI-Treiber verbessert die Leistung, indem Dateimetadaten wie Größe und Änderungszeit im Cache gespeichert werden. Der CSI-Treiber aktiviert diesen Stat-Cache standardmäßig und reduziert die Latenz, indem er Informationen lokal speichert, anstatt sie wiederholt aus Cloud Storage anzufordern. Sie können die maximale Größe und die Dauer konfigurieren, für die die Daten im Cache bleiben. 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 Netzwerkverkehr 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 wiederholte Dateilesevorgänge schneller von einem Cache-Speicher Ihrer Wahl bereitgestellt werden können. Je nach Ihren Preis-Leistungs-Anforderungen können Sie aus einer Reihe von Speicheroptionen für den Lesecache auswählen, darunter lokale SSDs, nichtflüchtiger Speicher und RAM-Laufwerk.
Best Practices für die Leistungsoptimierung finden Sie unter CSI-Treiber für Cloud Storage FUSE für die GKE-Leistung optimieren.
Beschränkungen
Der CSI-Treiber hat folgende 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.
- 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 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.
Voraussetzungen
Damit Sie den CSI-Treiber für Cloud Storage FUSE verwenden können, müssen Ihre Cluster die folgenden GKE-Versionsanforderungen erfüllen:
- Verwenden Sie Linux-Cluster mit GKE-Version 1.24 oder höher.
- Workload Identity-Föderation für GKE und GKE-Metadatenserver müssen aktiviert sein.
- Verwenden Sie die neueste Version der Google Cloud CLI.
Wenn Sie bestimmte Funktionen für den Cloud Storage FUSE CSI-Treiber verwenden möchten, müssen Sie außerdem die folgenden Anforderungen erfüllen:
Feature | Anforderungen an die GKE-Version |
---|---|
Privates Image für Sidecar-Container, benutzerdefiniertes Schreib-Zwischenspeicher-Volume und Ressourcenanfragen 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. |
Metadaten-Prefetch | 1.31.3-gke.1162000 oder höher |