Diese Übersicht stellt den Cloud Storage FUSE CSI Treiber vor, mit dem Sie Cloud Storage-Buckets als lokale Dateisysteme in Google Kubernetes Engine (GKE) bereitstellen können. Diese Funktion ist besonders nützlich für Arbeitslasten im Bereich 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 von ihren Kubernetes-Anwendungen aus auf in Cloud Storage gespeicherte Trainingsdaten, Gewichte von Inferenzmodellen und Checkpoints zugreifen oder diese dort 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 (CSI)-Standard, 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 als nichtflüchtige und skalierbare Datenquelle für Ihre Kubernetes-Anwendungen verwenden können, ohne komplexe Konfigurationen 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-CSI-Plug-in für Google Cloud Storage FUSE 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 wünschen, für die keine Vorkenntnisse mit nichtflüchtigen Kubernetes-Volumes erforderlich sind. Informationen zur Verwendung dieser Option finden Sie unter Cloud Storage-Buckets als sitzungsspezifische CSI-Volumes bereitstellen.
- PersistentVolumes: Sie erstellen eine PersistentVolume-Ressource, die auf den Cloud Storage-Bucket verweist, und verwenden dabei die statische Bereitstellung. 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 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 CSI-Treiber für Cloud Storage FUSE können Sie Trainings daten und gespeicherte Modelle lesen und dabei Cloud Storage als Quelle der Wahrheit verwenden. Wenn Sie beispielsweise ein Modell in GKE mit PyTorch, JAX oder TensorFlow trainieren, kann der Treiber Zugriff auf Trainingsdatensätze 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 Modellgewichte vorab laden, die in Cloud Storage gespeichert sind. Außerdem können Sie den parallelen Download mit Datei-Cache 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 CSI-Treiber für Cloud Storage FUSE können Sie Datenverarbeitungsaufgaben optimieren, indem Sie Anwendungen direkten Zugriff auf große Datensätze gewähren, die in Cloud Storage gespeichert sind. Ein in GKE ausgeführter Spark-Job könnte 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 CSI-Treiber für Cloud Storage FUSE wird automatisch bereitgestellt und in Standard- und Autopilot-Clustern 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 CSI-Treiber für Cloud Storage FUSE benötigt keinen privilegierten Zugriff. Dadurch werden die mit privilegiertem Zugriff verbundenen Risiken minimiert und der Sicherheitsstatus verbessert. Mit Workload Identity Federation for GKE können Sie die Authentifizierung verwalten und gleichzeitig genau steuern, wie Ihre Pods auf Cloud Storage-Objekte zugreifen.
- Leistung: Für KI/ML-Arbeitslasten können Sie vordefinierte Cloud Storage FUSE-Profile für Training, Bereitstellung und Checkpointing verwenden, um die Leistung automatisch basierend auf Ihrer Arbeitslast- und Knotenkonfiguration zu optimieren. Der CSI-Treiber für Cloud Storage FUSE verbessert die Leistung auch 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 Reduzierung der Latenz. Weitere Informationen zu diesen Funktionen finden Sie unter Optionen und Funktionen zur Leistungsoptimierung.
- Portabilität 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 für 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 CSI-Treiber für Cloud Storage FUSE unterstützt die
ReadWriteMany,ReadOnlyMany, undReadWriteOnceZugriffsmodi. 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 Messwert analysen für Cloud Storage FUSEaufrufen, einschließlich der Nutzung von Dateisystem, Cloud Storage und Datei-Cache.
Optionen und Funktionen zur Leistungsoptimierung
Der CSI-Treiber für Cloud Storage FUSE bietet mehrere Optionen und Funktionen zur Leistungsoptimierung, mit denen Sie den Zugriff Ihrer Pods auf in Cloud Storage-Buckets gespeicherte Daten optimieren können.
Wenn Sie beispielsweise das Datei-Caching aktivieren und die Parallelität von Anfragen anpassen, können Sie die Zeit zum Laden der Trainingsdaten erheblich verkürzen und so die Trainingszeiten beschleunigen.
Nativer Sidecar: Der CSI-Treiber für Cloud Storage FUSE hängt einen Sidecar-Container an Ihre Pods an , um Interaktionen mit Cloud Storage zu verwalten. Der Sidecar übernimmt die Bereitstellung und 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 Caching und Pufferung anpassen. Der Sidecar-Container des CSI-Treibers für Cloud Storage FUSE 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 Datei-Cache können Sie die Funktion 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 CSI-Treiber für Cloud Storage FUSE verbessert die Leistung durch das Caching von Dateimetadaten wie Größe und Änderungszeit. Der CSI Treiber aktiviert diesen Statistik-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 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 den Netzwerkverkehr und die Latenz minimieren.
Unterstützung für Datei-Caching: Sie können den CSI-Treiber für Cloud Storage FUSE 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 aus einem Cache-Speicher Ihrer Wahl bereitzustellen. Je nach Ihren Anforderungen an Preis und Leistung können Sie aus einer Reihe von Speicheroptionen für den Lese-Cache wählen, darunter lokale SSDs, auf Persistent Disk basierender Speicher und RAM-Disk.
Unterstützung für Knoten-Neustart: Ab GKE-Version 1.33.1-gke.1959000 können Pods, die CSI-Volumes für Cloud Storage FUSE verwenden, nach einem GKE-Knoten-Neustart automatisch wiederhergestellt werden. Wenn sich der Pod auf einem Knoten befindet, auf dem die ordnungsgemäße Knotenabschaltung aktiviert ist, muss er von einem Controller (z. B. einem Job oder einer Bereitstellung) verwaltet werden, der fehlerhafte Pods ersetzt. Eigenständige Pods können unterdessen automatisch auf Knoten neu gestartet werden, auf denen die ordnungsgemäße Knotenabschaltung nicht aktiviert ist. Bei GKE-Versionen vor 1.33.1-gke.1959000 können Pods nicht wiederhergestellt werden und Sie müssen sie neu bereitstellen. Die ordnungsgemäße Knotenabschaltung ist standardmäßig nur für VMs auf Abruf, Spot-VMs, Confidential VMs, GPU-VMs, TPU-VMs und die Maschinenserien Z3, Z4D, C3 Metal und C4 aktiviert.
Best Practices zur Leistungsoptimierung finden Sie unter Leistung des CSI-Treibers für Cloud Storage FUSE für GKE optimieren.
Beschränkungen
Der CSI-Treiber unterliegt folgenden Einschränkungen:
- Das Cloud Storage FUSE-Dateisystem hat Unterschiede in Leistung, Verfügbarkeit, Zugriffsautorisierung und Semantik im Vergleich zu einem POSIX-Dateisystem.
- Der CSI-Treiber für Cloud Storage FUSE wird in GKE Sandbox nicht unterstützt.
- Der CSI-Treiber für Cloud Storage FUSE unterstützt keine Volume-Snapshots, Volume-Klonen oder Volume-Erweiterungen.
- Einheitlicher Zugriff auf Bucket-Ebene ist bei der Verwendung von Workload Identity Federation for GKE für Lese-/Schreib-Arbeitslasten erforderlich.
- Sehen Sie sich die bekannten Probleme im GitHub-Projekt des CSI-Treibers für Cloud Storage FUSE an.
- Sehen Sie sich die offenen Probleme im GitHub-Projekt des CSI-Treibers für Cloud Storage FUSE an.
- Bei GKE-Versionen vor
1.33.3-gke.1226000unterstützt der CSI-Treiber für Cloud Storage FUSE aufgrund von Einschränkungen von Workload Identity Federation for GKE keine Pods, die im Hostnetzwerk (hostNetwork: true) ausgeführt werden. In Standard-GKE-Clustern mit Version1.33.3-gke.1226000oder höher können die Pods im Hostnetzwerk, die den CSI-Treiber für Cloud Storage FUSE verwenden, jedoch ihr eigenes Kubernetes-Dienstkonto zur Authentifizierung verwenden. Weitere Informationen finden Sie unter Zugriff für Pods mit Hostnetzwerk konfigurieren. - Bei GKE-Clusterversionen vor 1.32.3-gke.1099000 ist die Größe von JSON-verschlüsselten
mountOption-Strings begrenzt. Die Kombination aus Bucket-Name, vom Nutzer bereitgestellten Bereitstellungsoptionen und vom Treiber bereitgestelltenmountOptionsdarf maximal 500 Zeichen umfassen. Wir haben den Schwellenwert für JSON-Nachrichten in GKE-Clusterversionen ab 1.32.3-gke.1099000 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:
- Verwenden Sie Linux-Cluster mit GKE-Version 1.24 oder höher.
- Aktivieren Sie die Workload Identity Federation for GKE und den GKE-Metadatenserver.
- Verwenden Sie die aktuelle Version der Google Cloud CLI.
Wenn Sie bestimmte Funktionen des CSI-Treibers für Cloud Storage FUSE verwenden möchten, müssen Sie auch die Anforderungen erfüllen, die im Repository des CSI-Treibers für Cloud Storage FUSE angegeben sind.
Nächste Schritte
- Vorbereitung auf die Verwendung des CSI-Treibers für Cloud Storage FUSE für GKE.
- Fehlerbehebung bei Cloud Storage FUSE
- Leistung von Cloud Storage FUSE optimieren