Mit dem GKE Parallelstore-CSI-Treiber auf vorhandene Parallelstore-Instanzen zugreifen


Parallelstore ist nur auf Einladung verfügbar. Wenn Sie Zugriff auf Parallelstore in Ihrem Google Cloud Projekt anfordern möchten, wenden Sie sich an Ihren Vertriebsmitarbeiter.

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 kontrollierte und vorhersehbare Weise auf vorhandene vollständig verwaltete Parallelstore-Instanzen als Volumes für Ihre zustandsorientierten Arbeitslasten 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.

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 auf Ihre Instanz verweist.

In den folgenden Abschnitten wird das typische Verfahren für den Zugriff auf eine vorhandene Parallelstore-Instanz mit dem Parallelstore-CSI-Treiber beschrieben:

  1. Erstellen Sie ein PersistentVolume, das auf die Parallelstore-Instanz verweist.
  2. Greifen Sie mit einem PersistentVolumeClaim auf das Volume zu.
  3. (Optional) Konfigurieren Sie Ressourcen für den Sidecar-Container.
  4. Erstellen Sie eine Arbeitslast, die das Volume verbraucht.

PersistentVolume erstellen

In diesem Abschnitt wird ein Beispiel dafür gezeigt, wie Sie ein PersistentVolume erstellen, das auf eine vorhandene Parallelstore-Instanz verweist.

  1. Führen Sie den folgenden Befehl aus, um Ihre 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, die den Cluster enthält. 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.3
    
  2. Speichern Sie folgendes Manifest in einer Datei mit dem Namen parallelstore-pv.yaml:

    Pod-Halterung

    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: 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 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, in dem auf Ihre Parallelstore-Instanz zugegriffen werden kann.
    • STORAGECLASS_NAME: ist der Name Ihrer StorageClass. Der Wert kann ein leerer String sein, muss aber der Spezifikation in Ihrem PersistentVolumeClaim entsprechen.
    • 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.

    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. Durch die gemeinsame Nutzung des Mount-Punkts wird die Skalierbarkeit verbessert, da die Anzahl der Mounts 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 durch Angabe des Lautstärkeattributs 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 der Wert für die Anfrage oder das Limit festgelegt ist und der andere nicht, werden beide auf denselben angegebenen Wert festgelegt.

    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: 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: default
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die Google Cloud 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 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, in dem auf Ihre Parallelstore-Instanz zugegriffen werden kann.
    • STORAGECLASS_NAME: ist der Name Ihrer StorageClass. Der Wert kann ein leerer String sein, muss aber der Spezifikation in Ihrem PersistentVolumeClaim entsprechen.
    • STORAGE_SIZE: die Speichergröße, z. B. 12000Gi.
    • 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 im PersistentVolume-Objekt unterstützten Felder finden Sie in der Parallelstore-CSI-Referenzdokumentation.

  3. Erstellen Sie das PersistentVolume mit dem folgenden Befehl:

    kubectl apply -f parallelstore-pv.yaml
    

(Optional) Dieselbe Parallelstore-Instanz mit unterschiedlichen Bereitstellungsoptionen bereitstellen

Hinweis:Diese Funktion wird nicht mit Knotenbereitstellungen unterstützt.

Sie können dieselbe Parallelstore-Instanz mit unterschiedlichen Mount-Optionen einbinden. Sie können beispielsweise dieselbe Parallelstore-Instanz mit aktiviertem und deaktiviertem Caching im selben Pod einbinden.

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 zufälliger String Ihrer Wahl 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.

  1. 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. Er muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
    • STORAGE_SIZE: Speichergröße, z. B. 12000Gi. Er muss mit der Spezifikation in Ihrem PersistentVolume übereinstimmen.
  2. Erstellen Sie den PersistentVolumeClaim mit dem folgenden Befehl:

      kubectl create -f parallelstore-pvc.yaml
    

(Optional) Ressourcen für den Sidecar-Container konfigurieren

Hinweis:Sie können Ressourcen für den Sidecar-Container nur konfigurieren, wenn Sie die Pod-Bereitstellungs-Lokalität verwenden. Das heißt, das Volume-Attribut mountLocality in Ihrem PersistentVolume ist entweder nicht festgelegt oder auf pod gesetzt.

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 Ressourcenanforderungen 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 Anfrage- oder Grenzwert festgelegt und der andere nicht festgelegt ist, 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-Kapazität führt zu einer E/A-Drosselung.
  • Sie können "0" als Wert verwenden, um alle Ressourcenlimits für Standard-Cluster aufzuheben. Mit gke-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 Ressourcen gke-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.

  1. 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
    
  2. 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 bereitstellt, 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