In diesem Leitfaden wird beschrieben, wie Sie mit dem GKE Parallelstore CSI-Treiber mit statischer Bereitstellung eine Verbindung zu einer vorhandenen Parallelstore-Instanz herstellen. So können Sie auf vorhandene vollständig verwaltete Parallelstore-Instanzen als Volumes für Ihre zustandsorientierten Arbeitslasten auf kontrollierte und vorhersehbare Weise zugreifen.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Parallelstore API und die Google Kubernetes Engine API. APIs aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit
gcloud components update
ab.
- Informationen zu Einschränkungen und Anforderungen finden Sie in der Übersicht über CSI-Treiber.
- Erstellen Sie eine Parallelstore-Instanz, falls noch nicht geschehen.
- Konfigurieren Sie ein VPC-Netzwerk.
- Wenn Sie einen GKE Standard-Cluster verwenden möchten, müssen Sie den CSI-Treiber aktivieren.
Mit dem Parallelstore-CSI-Treiber auf eine vorhandene Parallelstore-Instanz zugreifen
Wenn Sie bereits eine Parallelstore-Instanz im selben Netzwerk wie Ihren GKE-Cluster bereitgestellt haben, können Sie dieser Anleitung folgen, um ein PersistentVolume statisch bereitzustellen, das sich auf Ihre Instanz bezieht.
In den folgenden Abschnitten wird das typische Verfahren zum Zugriff auf eine vorhandene Parallelstore-Instanz mit dem Parallelstore-CSI-Treiber beschrieben:
- Erstellen Sie ein PersistentVolume, das auf die Parallelstore-Instanz verweist.
- Greifen Sie mit einem PersistentVolumeClaim auf das Volume zu.
- (Optional) Konfigurieren Sie Ressourcen für den Sidecar-Container.
- Erstellen Sie eine Arbeitslast, die das Volume verbraucht.
PersistentVolume erstellen
In diesem Abschnitt wird ein Beispiel für das Erstellen eines PersistentVolumes gezeigt, das auf eine vorhandene Parallelstore-Instanz verweist.
Führen Sie den folgenden Befehl aus, um die Parallelstore-Instanz zu finden.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
Ersetzen Sie Folgendes:
- PROJECT_ID: die Google Cloud -Projekt-ID.
- LOCATION: die Compute Engine-Zone, in der sich der Cluster befindet. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
Die Ausgabe sollte ungefähr so aussehen: Notieren Sie sich den Namen der Parallelstore-Instanz und die IP-Zugangspunkte, bevor Sie mit dem nächsten Schritt fortfahren.
NAME capacity DESCRIPTION CREATE_TIME UPDATE_TIME STATE network RESERVED_IP_RANGE ACCESS_POINTS projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563 12000 2024-03-06T19:18:26.036463730Z 2024-03-06T19:24:44.561441556Z ACTIVE 10.51.110.2,10.51.110.4,10.51.110.3
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
parallelstore-pv.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: parallelstore-pv spec: storageClassName: "STORAGECLASS_NAME" capacity: storage: STORAGE_SIZE accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: parallelstore.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container" volumeAttributes: accessPoints: ACCESS_POINTS network: NETWORK_NAME claimRef: name: parallelstore-pvc namespace: default
Ersetzen Sie Folgendes:
- PROJECT_ID: die Google Cloud -Projekt-ID
- LOCATION: den zonalen Speicherort Ihrer Parallelstore-Instanz. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
- INSTANCE_NAME: Der Name Ihrer Parallelstore-Instanz. Ein Beispiel für einen gültigen
volumeHandle
-Wert ist"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
. - ACCESS_POINTS: die Zugriffspunkte Ihrer Parallelstore-Instanz, z. B.
10.51.110.2,10.51.110.4,10.51.110.3
. - NETWORK_NAME: Das VPC-Netzwerk, auf das Ihre Parallelstore-Instanz zugreifen kann.
- STORAGECLASS_NAME: ist der Name Ihrer StorageClass. Dies kann ein leerer String sein, muss aber mit der Spezifikation in Ihrem PersistentVolumeClaim übereinstimmen.
- STORAGE_SIZE: die Speichergröße, z. B.
12000Gi
.
Eine vollständige Liste der im PersistentVolume-Objekt unterstützten Felder finden Sie in der Parallelstore-CSI-Referenzdokumentation.
Erstellen Sie das PersistentVolume mit dem folgenden Befehl:
kubectl apply -f parallelstore-pv.yaml
Optional: Dieselbe Parallelstore-Instanz mit verschiedenen Bereitstellungsoptionen bereitstellen
Sie können dieselbe Parallelstore-Instanz mit verschiedenen Bereitstellungsoptionen bereitstellen. Sie können beispielsweise dieselbe Parallelstore-Instanz mit aktiviertem und deaktiviertem Caching im selben Pod bereitstellen.
Wenn Sie dieselbe Parallelstore-Instanz mit verschiedenen Bereitstellungsoptionen bereitstellen möchten, müssen Sie für jede Bereitstellungsoption ein PersistentVolume erstellen. Verwenden Sie für das Feld volumeHandle
im PersistentVolume-Objekt die folgende Syntax: „PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX“, wobei RANDOM_SUFFIX ein beliebiger Zufallsstring ist.
Beispiel: "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"
Mit einem PersistentVolumeClaim auf das Volume zugreifen
Sie können eine PersistentVolumeClaim-Ressource erstellen, die auf die StorageClass des Parallelstore-CSI-Treibers verweist.
In der folgenden Manifestdatei wird ein Beispiel für das Erstellen eines PersistentVolumeClaims im ReadWriteMany
-Zugriffsmodus gezeigt, der auf die zuvor erstellte StorageClass verweist.
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
parallelstore-pvc.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: parallelstore-pvc namespace: default spec: accessModes: - ReadWriteMany storageClassName: STORAGECLASS_NAME resources: requests: storage: STORAGE_SIZE
Ersetzen Sie Folgendes:
- STORAGECLASS_NAME: Der Name Ihrer StorageClass. Sie muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
- STORAGE_SIZE: Speicherplatz, z. B.
12000Gi
. Sie muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
Erstellen Sie den PersistentVolumeClaim mit dem folgenden Befehl:
kubectl create -f parallelstore-pvc.yaml
(Optional) Ressourcen für den Sidecar-Container konfigurieren
Wenn Sie einen Arbeitslast-Pod erstellen, der Parallelstore-gestützte Volumes verwendet, ermittelt der CSI-Treiber, ob Ihr Volume auf Parallelstore-Instanzen basiert.
Wenn der Treiber erkennt, dass Ihr Volume Parallelstore-basiert ist, oder wenn Sie die Anmerkung gke-parallelstore/volumes: "true"
angeben, schleust der CSI-Treiber automatisch einen Sidecar-Container namens gke-parallelstore-sidecar
in Ihren Pod ein. Dieser Sidecar-Container stellt die Parallelstore-Instanz Ihrer Arbeitslast bereit.
Standardmäßig ist der Sidecar-Container mit den folgenden Ressourcenanfragen konfiguriert, ohne dass Ressourcenlimits festgelegt sind:
- 250 mCPU
- 512 MiB Arbeitsspeicher
- 10 MiB sitzungsspezifischer Speicher
Wenn Sie diese Werte überschreiben möchten, können Sie optional die Annotation gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
angeben, wie im folgenden Beispiel gezeigt:
apiVersion: v1
kind: Pod
metadata:
annotations:
gke-parallelstore/volumes: "true"
gke-parallelstore/cpu-request: 500m
gke-parallelstore/memory-request: 1Gi
gke-parallelstore/ephemeral-storage-request: 500Mi
gke-parallelstore/cpu-limit: 1000m
gke-parallelstore/memory-limit: 2Gi
gke-parallelstore/ephemeral-storage-limit: 1Gi
Berücksichtigen Sie die folgenden Überlegungen, wenn Sie die Menge der zuzuweisenden Ressourcen festlegen:
- Wenn einer der Werte für die Anfrage oder das Limit festgelegt ist und der andere nicht, setzt GKE beide auf denselben angegebenen Wert.
- Weisen Sie dem Sidecar-Container mehr CPU zu, wenn Ihre Arbeitslasten einen höheren Durchsatz benötigen. Eine unzureichende CPU führt zu einer Drosselung der E/A-Vorgänge.
- Mit dem Wert „0“ können Sie alle Ressourcenlimits für Standardcluster aufheben. Mit
gke-parallelstore/memory-limit: "0"
wird beispielsweise das Speicherlimit für den Sidecar-Container aufgehoben. Das ist nützlich, wenn Sie sich nicht sicher sind, wie viele Ressourcengke-parallelstore-sidecar
für Ihre Arbeitslasten benötigt, und möchten, dass der Sidecar alle verfügbaren Ressourcen auf einem Knoten verbrauchen soll.
Arbeitslast erstellen, die das Volume verbraucht
In diesem Abschnitt wird ein Beispiel für das Erstellen eines Pods gezeigt, der die zuvor erstellte PersistentVolumeClaim-Ressource nutzt.
Eine PersistentVolumeClaim-Ressource kann von mehreren Pods verwendet werden.
Speichern Sie folgendes Manifest in einer Datei mit dem Namen
my-pod.yaml
.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: parallelstore-volume mountPath: /data volumes: - name: parallelstore-volume persistentVolumeClaim: claimName: parallelstore-pvc
Führen Sie den folgenden Befehl aus, um das Manifest auf den Cluster anzuwenden:
kubectl apply -f my-pod.yaml
Der Pod wartet, bis GKE den PersistentVolumeClaim bereitgestellt hat, bevor er gestartet wird. Dieser Vorgang kann einige Minuten dauern.
Parallelstore-CSI-Treiber verwalten
In diesem Abschnitt erfahren Sie, wie Sie den Parallelstore-CSI-Treiber bei Bedarf aktivieren und deaktivieren.
Parallelstore-CSI-Treiber auf einem neuen Cluster aktivieren
Führen Sie den folgenden Befehl mit der Google Cloud CLI aus, um den Parallelstore-CSI-Treiber zu aktivieren, wenn Sie einen neuen Standardcluster erstellen:
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
Ersetzen Sie Folgendes:
- CLUSTER_NAME: Der Name Ihres Clusters.
- LOCATION: die Compute Engine-Zone, in der sich der Cluster befindet. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
- NETWORK_NAME: Name des VPC-Netzwerks, das Sie unter VPC-Netzwerk konfigurieren erstellt haben.
- VERSION: Die GKE-Versionsnummer.
Sie müssen eine unterstützte Versionsnummer angeben, z. B. GKE-Version 1.29 oder höher, um diese Funktion nutzen zu können. Alternativ können Sie das Flag
--release-channel
verwenden und eine Release-Version angeben.
Parallelstore-CSI-Treiber auf einem vorhandenen Cluster aktivieren
Führen Sie den folgenden Befehl mit der Google Cloud CLI aus, um den Treiber in einem vorhandenen GKE Standardcluster zu aktivieren:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
Ersetzen Sie Folgendes:
- CLUSTER_NAME: Der Name Ihres Clusters.
- LOCATION: die Compute Engine-Zone, in der sich der Cluster befindet. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
Achten Sie darauf, dass Ihr GKE-Cluster in demselben VPC-Netzwerk ausgeführt wird, das Sie unter VPC-Netzwerk konfigurieren eingerichtet haben. Sie können das VPC-Netzwerk für einen GKE-Cluster in derGoogle Cloud Console oder über den Befehl gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
prüfen.
Parallelstore-CSI-Treiber deaktivieren
Sie können den Parallelstore-CSI-Treiber auf einem vorhandenen Autopilot- oder Standardcluster mithilfe der Google Cloud CLI deaktivieren.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
Ersetzen Sie Folgendes:
- CLUSTER_NAME: Der Name Ihres Clusters.
- LOCATION: die Compute Engine-Zone, in der sich der Cluster befindet. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
fsGroup mit Parallelstore-Volumes verwenden
Der Parallelstore-CSI-Treiber unterstützt das Ändern der Gruppeneigentümerschaft des Verzeichnisses auf Stammebene des bereitgestellten Dateisystems, damit es mit einer vom Nutzer angeforderten fsGroup übereinstimmt, die im SecurityContext des Pods angegeben ist. Diese Funktion wird nur in GKE-Clustern der Version 1.29.5 oder höher oder der Version 1.30.1 oder höher unterstützt.
Fehlerbehebung
Eine Anleitung zur Fehlerbehebung finden Sie auf der Seite Fehlerbehebung in der Parallelstore-Dokumentation.
Nächste Schritte
- Referenzdokumentation zu Parallelstore CSI
- Informationen zum Verbessern der Arbeitslastleistung mit der Parallelstore-Abfangbibliothek
- Informationen zum Übertragen von Daten aus Cloud Storage in Parallelstore
- Informationen zum Automatisieren der Datenübertragung von einem Cloud Storage-Bucket-Quellspeicher zu einem Ziel-PersistentVolumeClaim, der von einer Parallelstore-Instanz unterstützt wird, mit dem GKE Volume Populator
- In dieser Anleitung erfahren Sie, wie Sie ein TensorFlow-Modell mit Keras in GKE trainieren.