In dieser Anleitung wird beschrieben, wie Sie ein neues Kubernetes-Volume erstellen, das von einem Parallelstore-CSI-Treiber in GKE mit dynamischer Bereitstellung unterstützt wird. So können Sie on demand Speicherplatz mit vollständig verwalteten Parallelstore-Instanzen erstellen und als Volumes für Ihre zustandsorientierten Arbeitslasten darauf 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 CSI-Treiberübersicht.
- 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 ein neues Volume erstellen
In den folgenden Abschnitten wird das typische Verfahren zur Erstellung eines Kubernetes-Volumes beschrieben, das von einem Parallelstore-CSI-Treiber in GKE unterstützt wird:
- (Optional) Erstellen Sie eine StorageClass.
- 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.
(Optional) Speicherklasse erstellen
Wenn der Parallelstore-CSI-Treiber aktiviert ist, erstellt GKE automatisch eine StorageClass mit dem Namen parallelstore-rwx
für die Bereitstellung von Parallelstore-Instanzen. Diese StorageClass weist den CSI-Treiber an, Parallelstore-Instanzen in derselben Region wie Ihr GKE-Cluster bereitzustellen, um eine optimale E/A-Leistung zu gewährleisten.
Optional können Sie eine benutzerdefinierte StorageClass mit einer bestimmten Topologie erstellen. Führen Sie dazu die folgenden Schritte aus:
Speichern Sie folgendes StorageClass-Manifest in einer Datei mit dem Namen
parallelstore-class.yaml
:Pod-Halterung
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION
Ersetzen Sie Folgendes:
- LOCATION: die Compute Engine-Zone, die den Cluster enthält. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
Eine vollständige Liste der in der StorageClass unterstützten Felder finden Sie in der Parallelstore-CSI-Referenzdokumentation.
Knotenbereitstellung
Mit dem Parallelstore-CSI-Treiber können Sie Volumes direkt auf Ihren Knoten einbinden. Die Knotenbereitstellung wird in GKE-Clustern ab Version 1.32.3 unterstützt.
Bei der Einbindung auf Knotenebene können alle Pods auf einem Knoten denselben Einbindungspunkt verwenden. Wenn Sie denselben Mount-Punkt verwenden, wird die Skalierbarkeit verbessert, da die Anzahl der Bereitstellungen mit der Anzahl der Knoten und nicht mit der Anzahl der Pods (wie im Sidecar-Modus) zunimmt.
So können Sie mehr Pods ausführen und gleichzeitig dieselbe Parallelstore-Instanz verwenden.
Hinweis:Diese Funktion wird durch Angabe des Parameters mountLocality: node aktiviert. Der Standardwert für die Pod-Montageposition ist mountLocality: pod. Die Flags für CPU- und Speicheranforderungen und -limits für dfuse funktionieren nur mit der Einstellung mountLocality: node.
Wenn entweder der Wert der Anfrage oder das Limit festgelegt ist und das andere nicht, werden beide auf denselben angegebenen Wert gesetzt.
Sie können `'0'` als Wert verwenden, um alle Ressourcenlimits aufzuheben. Mit dfuseMemoryLimit: '0' wird beispielsweise das Speicherlimit für den dfuse-Prozess entfernt.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: parallelstore-class provisioner: parallelstore.csi.storage.gke.io volumeBindingMode: Immediate reclaimPolicy: Delete allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: LOCATION parameters: mountLocality: node dfuseCPURequest: DFUSE_CPU_REQUEST dfuseMemoryRequest: DFUSE_MEMORY_REQUEST dfuseCPULimit: DFUSE_CPU_LIMIT dfuseMemoryLimit: DFUSE_MEMORY_LIMIT
Ersetzen Sie Folgendes:
- LOCATION: die Compute Engine-Zone, die den Cluster enthält. Sie müssen eine unterstützte Zone für den Parallelstore-CSI-Treiber angeben.
- DFUSE_CPU_REQUEST: Die CPU-Anforderung für den dfuse-Prozess. Der Standardwert ist
250m
. - DFUSE_MEMORY_REQUEST: die Speicheranforderung 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 in der StorageClass unterstützten Felder finden Sie in der Parallelstore-CSI-Referenzdokumentation.
Erstellen Sie die StorageClass mit dem folgenden Befehl:
kubectl create -f parallelstore-class.yaml
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
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: STORAGE_SIZE storageClassName: parallelstore-class
Ersetzen Sie STORAGE_SIZE durch die Speichergröße, z. B.
12000Gi
. Der Wert muss im Bereich von 12.000 GiB bis 100.000 GiB liegen (in Vielfachen von 4.000 GiB).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 für Ihre Arbeitslast bereit.
Standardmäßig konfiguriert GKE den Sidecar-Container mit den folgenden Ressourcenanfragen, 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 Anfrage- oder Grenzwert festgelegt und der andere nicht festgelegt ist, werden beide auf denselben angegebenen Wert festgelegt.
- 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 E/A-Drosselung.
- Sie können
"0"
als Wert verwenden, um alle Ressourcenlimits für Standard-Cluster aufzuheben. Mitgke-parallelstore/memory-limit: "0"
wird beispielsweise das Speicherlimit für den Sidecar-Container entfernt. 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 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-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 der PersistentVolumeClaim bereitgestellt wird, bevor er ausgeführt wird. Dieser Vorgang kann einige Minuten dauern.
Parallelstore-CSI-Treiber verwalten
In diesem Abschnitt wird beschrieben, wie Sie den Parallelstore-CSI-Treiber bei Bedarf aktivieren und deaktivieren können.
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, die den Cluster enthält. 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, um diese Funktion nutzen zu können, z. B. GKE-Version 1.29 oder höher. 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 auf 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, die den Cluster enthält. 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. Wenn Sie das VPC-Netzwerk für einen GKE-Cluster prüfen möchten, können Sie dieGoogle Cloud -Konsole oder den Befehl gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
verwenden.
Parallelstore-CSI-Treiber deaktivieren
Sie können den Parallelstore-CSI-Treiber auf einem vorhandenen Autopilot- oder Standardcluster über die 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, die den Cluster enthält. 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 des Gruppeneigentümers des Stammverzeichnisses des bereitgestellten Dateisystems, damit es einer vom Nutzer angeforderten fsGroup entspricht, die im SecurityContext des Pods angegeben ist. Diese Funktion wird nur in GKE-Clustern mit Version 1.29.5 oder höher oder Version 1.30.1 oder höher unterstützt.
Fehlerbehebung
Eine Anleitung zur Fehlerbehebung finden Sie in der Parallelstore-Dokumentation auf der Seite Fehlerbehebung.
Nächste Schritte
- Referenzdokumentation zu Parallelstore CSI
- Informationen zur Verwendung der Parallelstore-Abfangbibliothek zur Verbesserung der Workload-Leistung
- Informationen zum Übertragen von Daten aus Cloud Storage in Parallelstore
- Informationen zur Verwendung des GKE Volume Populator zum Automatisieren der Datenübertragung von einem Cloud Storage-Bucket als Quellspeicher zu einem PersistentVolumeClaim als Ziel, der von einer Parallelstore-Instanz unterstützt wird.
- Anleitung zum Trainieren eines TensorFlow-Modells mit Keras in GKE