Parallelstore-Instanz über die Google Kubernetes Engine erstellen und eine Verbindung dazu herstellen

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 dieser Anleitung wird beschrieben, wie Sie ein neues Kubernetes-Volume mit dynamischer Bereitstellung erstellen, das von einem Parallelstore-CSI-Treiber in GKE 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.

Neues Volume mit dem Parallelstore-CSI-Treiber 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:

  1. (Optional) Erstellen Sie eine StorageClass.
  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.

(Optional) Speicherklasse erstellen

Wenn der Parallelstore-CSI-Treiber aktiviert ist, erstellt GKE automatisch eine StorageClass mit dem Namen parallelstore-rwx zur 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:

  1. Speichern Sie folgendes StorageClass-Manifest in einer Datei mit dem Namen parallelstore-class.yaml:

    Wandhalterung

    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 bereitstellen. Knoten-Bindungen werden in GKE-Clustern ab Version 1.32.3 unterstützt.

    Durch das Bereitstellen auf Knotenebene können alle Pods auf einem Knoten denselben Bereitstellungspunkt verwenden. Die gemeinsame Nutzung desselben Bereitstellungspunkts verbessert die Skalierbarkeit, 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 dabei dieselbe Parallelstore-Instanz verwenden.

    Hinweis:Diese Funktion wird durch Angabe des Parameters mountLocality: node aktiviert. Der Standardwert für die Bereitstellungsstelle des Pods ist mountLocality: pod. Die CPU-, Speicheranforderungen und Limit-Flags von dfuse funktionieren nur mit der Einstellung mountLocality: node.

    Wenn entweder der Wert der 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: 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-Anfrage für den dfuse-Prozess. Der Standardwert ist 250m.
    • DFUSE_MEMORY_REQUEST: die Arbeitsspeicheranforderung 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 Arbeitsspeicherlimit 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.

  2. 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.

  1. 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 zwischen 12.000 GiB und 100.000 GiB liegen (in Vielfachen von 4.000 GiB).

  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-Bereitstellungslokalität verwenden. Das Volume-Attribut mountLocality in Ihrem PersistentVolume muss entweder nicht festgelegt oder auf pod festgelegt sein.

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 konfiguriert GKE den Sidecar-Container mit den folgenden Ressourcenanfragen, ohne festgelegte Ressourcenlimits:

  • 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 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 führt zu einer Drosselung der E/A-Vorgänge.
  • Sie können "0" als Wert verwenden, um alle Ressourcenlimits für Standardcluster 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 nutzt.

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 der PersistentVolumeClaim bereitgestellt wurde, 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 der Google 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 der vom Nutzer angeforderten fsGroup entspricht, die in der 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