In diesem Leitfaden wird beschrieben, wie Sie mit dem GKE-CSI-Treiber für Parallelstore 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.
Hinweis
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 diesen Task verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
- Informationen zu Einschränkungen und Anforderungen finden Sie in der Übersicht zum 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 CSI-Treiber für Parallelstore auf eine vorhandene Parallelstore-Instanz zugreifen
Wenn Sie bereits eine Parallelstore-Instanz im selben Netzwerk wie Ihren GKE-Cluster bereitgestellt haben, können Sie mit dieser Anleitung ein PersistentVolume statisch bereitstellen, das auf Ihre Instanz verweist.
In den folgenden Abschnitten wird das typische Verfahren für den Zugriff auf eine vorhandene Parallelstore-Instanz mit dem CSI-Treiber für Parallelstore 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.
- Arbeitslast erstellen, die das Volume verbraucht.
PersistentVolume erstellen
In diesem Abschnitt wird ein Beispiel für das Erstellen eines PersistentVolume gezeigt, das auf eine vorhandene Parallelstore-Instanz verweist.
Führen Sie den folgenden Befehl aus, um Ihre Parallelstore-Instanz zu finden.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATIONErsetzen Sie Folgendes:
- PROJECT_ID: die Cloud de Confiance by S3NS Projekt-ID.
- LOCATION: die Compute Engine-Zone mit dem Cluster. 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-Zugriffspunkte, 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.3Speichern Sie folgendes Manifest in einer Datei mit dem Namen
parallelstore-pv.yaml:Pod-Bereitstellung
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: defaultErsetzen Sie Folgendes:
- PROJECT_ID: die Cloud de Confiance by S3NS Projekt-ID.
- LOCATION: der zonale Standort 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
volumeHandleWert 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, in dem auf Ihre Parallelstore-Instanz zugegriffen werden kann.
- STORAGECLASS_NAME: der Name Ihrer StorageClass. Der Wert 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 unter der Referenzdokumentation zu Parallelstore CSI.
Knotenbereitstellung
Mit dem CSI-Treiber für Parallelstore können Sie Volumes direkt auf Ihren Knoten bereitstellen. Die Knotenbereitstellung wird in GKE-Clustern ab Version 1.32.3 unterstützt.
Bei der Bereitstellung auf Knotenebene können alle Pods auf einem Knoten denselben Bereitstellungspunkt verwenden. Durch die gemeinsame Nutzung des Bereitstellungspunkts wird die Skalierbarkeit verbessert, da die Anzahl der Bereitstellungen mit der Anzahl der Knoten und nicht mit der Anzahl der Pods zunimmt (wie im Sidecar-Modus).
So können Sie mehr Pods ausführen und gleichzeitig dieselbe Parallelstore-Instanz verwenden.
Hinweis:Diese Funktion wird aktiviert, indem Sie das Volume-Attribut mountLocality: node angeben. Der Standardwert für die Pod-Bereitstellungsort ist mountLocality: pod. Die dfuse-Flags für CPU- und Speicheranfragen und -limits funktionieren nur mit der Einstellung mountLocality: node.
Wenn der Wert für die Anfrage oder das Limit festgelegt ist und der andere nicht, werden beide auf denselben angegebenen Wert gesetzt.
Sie können `'0'` als Wert verwenden, um alle Ressourcenlimits aufzuheben. Beispiel: dfuseMemoryLimit: '0' entfernt das Speicherlimit für den dfuse-Prozess.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 mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT claimRef: name: parallelstore-pvc namespace: defaultErsetzen Sie Folgendes:
- PROJECT_ID: die Cloud de Confiance by S3NS Projekt-ID.
- LOCATION: der zonale Standort 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
volumeHandleWert 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, in dem auf Ihre Parallelstore-Instanz zugegriffen werden kann.
- STORAGECLASS_NAME: der Name Ihrer StorageClass. Der Wert kann ein leerer String sein, muss aber mit der Spezifikation in Ihrem PersistentVolumeClaim übereinstimmen.
- STORAGE_SIZE: die Speichergröße, z. B.
12000Gi. - DFUSE_CPU_REQUEST: die CPU-Anfrage für den dfuse-Prozess. Der Standardwert ist
250m. - DFUSE_MEMORY_REQUEST: die Speicheranfrage für den dfuse-Prozess. Der Standardwert ist
512Mi. - DFUSE_CPU_LIMIT: das CPU-Limit für den dfuse-Prozess. Der Standardwert ist nicht festgelegt.
- DFUSE_MEMORY_LIMIT: das Speicherlimit für den dfuse-Prozess. Der Standardwert ist
10Gi.
Eine vollständige Liste der im PersistentVolume-Objekt unterstützten Felder finden Sie unter der Referenzdokumentation zu Parallelstore CSI.
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. So können Sie beispielsweise dieselbe Parallelstore-Instanz mit aktivierter und deaktivierter Cache-Funktion 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 die folgende Syntax für das volumeHandle Feld im
PersistentVolume-Objekt: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX"
. RANDOM_SUFFIX ist ein beliebiger zufälliger String.
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_SIZEErsetzen Sie Folgendes:
- STORAGECLASS_NAME: der Name Ihrer StorageClass. Er muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
- STORAGE_SIZE: die Speichergröße, z. B.
12000Gi. Er muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
Erstellen Sie den PersistentVolumeClaim mit dem folgenden Befehl:
kubectl create -f parallelstore-pvc.yaml
(Optional) Konfigurieren Sie Ressourcen für den Sidecar-Container.
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 für Ihre Arbeitslast bereit.
Standardmäßig ist der Sidecar-Container mit den folgenden Ressourcenanfragen konfiguriert, wobei die Ressourcenlimits nicht 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, werden beide von GKE auf denselben angegebenen Wert gesetzt.
- Weisen Sie dem Sidecar-Container mehr CPU zu, wenn Ihre Arbeitslasten einen höheren Durchsatz benötigen. Eine unzureichende CPU-Kapazität führt zu einer Drosselung der E/A-Vorgänge.
- Sie können
"0"als Wert verwenden, um alle Ressourcenlimits für Standardcluster aufzuheben; Beispiel:gke-parallelstore/memory-limit: "0"entfernt das Speicherlimit für den Sidecar-Container. Das ist nützlich, wenn Sie sich nicht sicher sind, wie viele Ressourcengke-parallelstore-sidecarfü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 verwendet.
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-pvcFühren Sie den folgenden Befehl aus, um das Manifest auf den Cluster anzuwenden:
kubectl apply -f my-pod.yamlDer Pod wartet, bis GKE den PersistentVolumeClaim bereitstellt, bevor er ausgeführt wird. Dieser Vorgang kann einige Minuten dauern.
CSI-Treiber für Parallelstore verwalten
In diesem Abschnitt wird beschrieben, wie Sie den CSI-Treiber für Parallelstore aktivieren und deaktivieren können.
CSI-Treiber für Parallelstore 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 mit dem Cluster. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
- NETWORK_NAME: der Name des VPC-Netzwerks, das Sie unter VPC-Netzwerk konfigurieren erstellt haben.
- VERSION: Die GKE-Versionsnummer.
Sie müssen eine unterstützte Versionsnummer angeben, um diese Funktion nutzen zu können, z. B. GKE-Version 1.29 oder höher. Alternativ können Sie das Flag
--release-channelverwenden und eine Release-Version angeben.
CSI-Treiber für Parallelstore auf einem vorhandenen Cluster aktivieren
Führen Sie den folgenden Befehl mit der Google Cloud CLI aus, um den Treiber auf einem vorhandenen GKE Standard-Cluster 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 mit dem Cluster. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
Achten Sie darauf, dass Ihr GKE-Cluster im selben 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 der
Cloud de Confiance Konsole oder mit dem Befehl gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)prüfen.
CSI-Treiber für Parallelstore deaktivieren
Sie können den CSI-Treiber für Parallelstore auf einem vorhandenen Autopilot- oder Standard-Cluster mit 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 mit dem Cluster. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
fsGroup mit Parallelstore-Volumes verwenden
Der CSI-Treiber für Parallelstore unterstützt das Ändern des Gruppeninhabers des Stamm verzeichnisses des bereitgestellten Dateisystems, damit es einer vom Nutzer angeforderten fsGroup entspricht, die im SecurityContext SecurityContext angegeben ist. Diese Funktion wird nur in GKE-Clustern ab Version 1.29.5 oder Version 1.30.1 unterstützt.
Fehlerbehebung
Eine Anleitung zur Fehlerbehebung finden Sie auf der Seite zur Fehlerbehebung in der Parallelstore-Dokumentation.
Nächste Schritte
- Referenzdokumentation zu Parallelstore CSI
- Informationen zur Verwendung der Parallelstore-Abfangbibliothek zur Verbesserung der Arbeitslastleistung.
- Informationen zum Übertragen von Daten aus Cloud Storage zu Parallelstore.
- Informationen zur Verwendung des GKE-Volume-Populators zum Automatisieren der Datenübertragung von einem Cloud Storage-Bucket-Quellspeicher zu einem PersistentVolumeClaim-Ziel, das von einer Parallelstore-Instanz unterstützt wird
- Anleitung zum Trainieren eines TensorFlow-Modells mit Keras in GKE.