Accedere alle istanze Parallelstore esistenti utilizzando il driver CSI Parallelstore di GKE


Parallelstore è disponibile solo su invito. Se vuoi richiedere l'accesso a Parallelstore nel tuo progetto Google Cloud , contatta il tuo rappresentante di vendita.

Questa guida descrive come connettersi a un'istanza Parallelstore esistente con il driver CSI GKE Parallelstore con il provisioning statico. In questo modo puoi accedere alle istanze Parallelstore completamente gestite esistenti come volumi per i tuoi carichi di lavoro stateful in modo controllato e prevedibile.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Abilita l'API Parallelstore e l'API Google Kubernetes Engine.
  • Abilita le API
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.

Accedi a un'istanza Parallelstore esistente utilizzando il driver CSI Parallelstore

Se hai già eseguito il provisioning di un'istanza Parallelstore all'interno della stessa rete del cluster GKE, puoi seguire queste istruzioni per eseguire il provisioning statico di un PersistentVolume che fa riferimento alla tua istanza.

Le sezioni seguenti descrivono la procedura tipica per accedere a un'istanza Parallelstore esistente utilizzando il driver CSI Parallelstore:

  1. Crea un PersistentVolume che faccia riferimento all'istanza Parallelstore.
  2. Usa un oggetto PersistentVolumeClaim per accedere al volume.
  3. (Facoltativo) Configura le risorse per il container sidecar.
  4. Crea un workload che utilizzi il volume.

Crea un PersistentVolume

Questa sezione mostra un esempio di come creare un PersistentVolume che faccia riferimento a un'istanza Parallelstore esistente.

  1. Esegui questo comando per individuare l'istanza Parallelstore.

    gcloud beta parallelstore instances list \
        --project=PROJECT_ID \
        --location=LOCATION
    

    Sostituisci quanto segue:

    • PROJECT_ID: l' Google Cloud ID progetto.
    • LOCATION: la zona di Compute Engine contenente il cluster. Devi specificare una zona supportata per il driver CSI Parallelstore.

    L'output dovrebbe essere simile al seguente. Prima di procedere al passaggio successivo, assicurati di annotare il nome dell'istanza Parallelstore e i punti di accesso IP.

    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. Salva il seguente manifest in un file denominato parallelstore-pv.yaml:

    Supporto per pod

    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
    

    Sostituisci quanto segue:

    • PROJECT_ID: l' Google Cloud ID progetto.
    • LOCATION: la posizione zonale dell'istanza Parallelstore. Devi specificare una zona supportata per il driver CSI Parallelstore.
    • INSTANCE_NAME: il nome dell'istanza Parallelstore. Un esempio di valore volumeHandle valido è "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
    • ACCESS_POINTS: i punti di accesso della tua istanza Parallelstore; ad esempio, 10.51.110.2,10.51.110.4,10.51.110.3.
    • NETWORK_NAME: la rete VPC in cui è possibile accedere all'istanza Parallelstore.
    • STORAGECLASS_NAME: il nome di StorageClass. Il valore può essere una stringa vuota, ma deve corrispondere alla specifica nel tuo PersistentVolumeClaim.
    • STORAGE_SIZE: la dimensione dello spazio di archiviazione, ad esempio 12000Gi.

    Per l'elenco completo dei campi supportati nell'oggetto PersistentVolume, consulta la documentazione di riferimento di Parallelstore CSI.

    Montaggio del nodo

    Il driver CSI Parallelstore ti consente di montare i volumi direttamente sui nodi. Il montaggio dei nodi è supportato sui cluster GKE versione 1.32.3 e successive.

    Il montaggio a livello di nodo consente a tutti i pod di un nodo di condividere lo stesso punto di montaggio. La condivisione del punto di montaggio migliora la scalabilità perché il numero di montaggi aumenta con il numero di nodi, non con il numero di pod (come con la modalità sidecar).

    Di conseguenza, puoi eseguire più pod condividendo la stessa istanza di Parallelstore.

    Nota:questa funzionalità viene attivata specificando l'attributo del volume mountLocality: node. Il valore predefinito per la località di montaggio del pod è mountLocality: pod. I flag di richiesta e limite di CPU e memoria dfuse funzionano solo con l'impostazione mountLocality: node.

    Se il valore della richiesta o del limite è impostato e l'altro non è impostato, entrambi verranno impostati sullo stesso valore specificato.

    Puoi utilizzare "0" come valore per annullare l'impostazione di eventuali limiti delle risorse. Ad esempio, dfuseMemoryLimit: '0' rimuove il limite di memoria per il processo dfuse.
    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
    

    Sostituisci quanto segue:

    • PROJECT_ID: l' Google Cloud ID progetto.
    • LOCATION: la posizione zonale dell'istanza Parallelstore. Devi specificare una zona supportata per il driver CSI Parallelstore.
    • INSTANCE_NAME: il nome dell'istanza Parallelstore. Un esempio di valore volumeHandle valido è "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
    • ACCESS_POINTS: i punti di accesso della tua istanza Parallelstore; ad esempio, 10.51.110.2,10.51.110.4,10.51.110.3.
    • NETWORK_NAME: la rete VPC in cui è possibile accedere all'istanza Parallelstore.
    • STORAGECLASS_NAME: il nome di StorageClass. Il valore può essere una stringa vuota, ma deve corrispondere alla specifica nel tuo PersistentVolumeClaim.
    • STORAGE_SIZE: la dimensione dello spazio di archiviazione, ad esempio 12000Gi.
    • DFUSE_CPU_REQUEST: la richiesta di CPU per il processo dfuse. Il valore predefinito è 250m.
    • DFUSE_MEMORY_REQUEST: la richiesta di memoria per il processo dfuse. Il valore predefinito è 512Mi.
    • DFUSE_CPU_LIMIT: il limite della CPU per il processo dfuse. Il valore predefinito è non impostato.
    • DFUSE_MEMORY_LIMIT: il limite di memoria per il processo dfuse. Il valore predefinito è 10Gi.

    Per l'elenco completo dei campi supportati nell'oggetto PersistentVolume, consulta la documentazione di riferimento di Parallelstore CSI.

  3. Crea PersistentVolume eseguendo questo comando:

    kubectl apply -f parallelstore-pv.yaml
    

(Facoltativo) Monta la stessa istanza Parallelstore con opzioni di montaggio diverse

Nota:questa funzionalità non è supportata con i supporti per nodi.

Puoi montare la stessa istanza Parallelstore con opzioni di montaggio diverse. Ad esempio, puoi montare la stessa istanza Parallelstore con la memorizzazione nella cache attivata e disattivata nello stesso pod.

Per montare la stessa istanza di Parallelstore con opzioni di montaggio diverse, devi creare un PersistentVolume per ogni opzione di montaggio. Utilizza la seguente sintassi per il campo volumeHandle nell'oggetto PersistentVolume: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX", dove RANDOM_SUFFIX è una stringa casuale a tua scelta.

Ad esempio: "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"

Usa un oggetto PersistentVolumeClaim per accedere al volume

Puoi creare una risorsa PersistentVolumeClaim che fa riferimento alla StorageClass del driver CSI Parallelstore.

Il seguente file manifest mostra un esempio di come creare un PersistentVolumeClaim nella modalità di accesso ReadWriteMany che fa riferimento alla StorageClass creata in precedenza.

  1. Salva il seguente manifest in un file denominato parallelstore-pvc.yaml:

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: parallelstore-pvc
        namespace: default
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: STORAGECLASS_NAME
        resources:
          requests:
            storage: STORAGE_SIZE
    

    Sostituisci quanto segue:

    • STORAGECLASS_NAME: il nome della tua StorageClass. Deve corrispondere alla specifica nel tuo PersistentVolume.
    • STORAGE_SIZE: dimensioni dello spazio di archiviazione, ad esempio 12000Gi. Deve corrispondere alla specifica nel tuo PersistentVolume.
  2. Crea l'oggetto PersistentVolumeClaim eseguendo questo comando:

      kubectl create -f parallelstore-pvc.yaml
    

(Facoltativo) Configura le risorse per il contenitore sidecar

Nota: puoi configurare le risorse per il container sidecar solo se utilizzi la località di montaggio del pod, ovvero se l'attributo del volume mountLocality in PersistentVolume non è impostato o è impostato su pod.

Quando crei un pod del workload che utilizza volumi supportati da Parallelstore, il driver CSI determina se il volume si basa su istanze Parallelstore.

Se il driver rileva che il volume è basato su Parallelstore o se specifichi l'annotazione gke-parallelstore/volumes: "true", il driver CSI inserisce automaticamente un container sidecar denominato gke-parallelstore-sidecar nel pod. Questo container sidecar monta l'istanza Parallelstore sul tuo carico di lavoro.

Per impostazione predefinita, il container sidecar è configurato con le seguenti richieste di risorse, con i limiti delle risorse non impostati:

  • 250 m CPU
  • 512 MiB di memoria
  • 10 MiB di spazio di archiviazione temporanea

Per sovrascrivere questi valori, puoi specificare facoltativamente l'annotazione gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request] come mostrato nell'esempio seguente:

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

Utilizza le seguenti considerazioni quando decidi la quantità di risorse da allocare:

  • Se uno dei valori di richiesta o limite è impostato e l'altro non lo è, GKE li imposta entrambi sullo stesso valore specificato.
  • Alloca più CPU al container sidecar se i tuoi carichi di lavoro richiedono un throughput maggiore. Una CPU insufficiente causerà la limitazione I/O.
  • Puoi utilizzare "0" come valore per annullare i limiti delle risorse nei cluster Standard; ad esempio, gke-parallelstore/memory-limit: "0" rimuove il limite di memoria per il container sidecar. Ciò è utile quando non riesci a decidere la quantità di risorse di cui gke-parallelstore-sidecar ha bisogno per i tuoi workload e vuoi consentire al sidecar di utilizzare tutte le risorse disponibili su un nodo.

Crea un workload che utilizzi il volume

Questa sezione mostra un esempio di come creare un pod che utilizza la risorsa PersistentVolumeClaim creata in precedenza.

Più pod possono condividere la stessa risorsa PersistentVolumeClaim.

  1. Salva il seguente manifest in un file denominato 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. Esegui questo comando per applicare il manifest al cluster:

      kubectl apply -f my-pod.yaml
    

    Il pod attende che GKE esegua il provisioning di PersistentVolumeClaim prima di iniziare l'esecuzione. Il completamento di questa operazione potrebbe richiedere diversi minuti.

Gestisci il driver CSI Parallelstore

Questa sezione spiega come attivare e disattivare il driver CSI Parallelstore, se necessario.

Abilita il driver CSI Parallelstore su un nuovo cluster

Per abilitare il driver CSI Parallelstore durante la creazione di un nuovo cluster Standard, esegui questo comando con Google Cloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --network=NETWORK_NAME \
    --addons=ParallelstoreCsiDriver \
    --cluster-version=VERSION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del tuo cluster.
  • LOCATION: la zona di Compute Engine contenente il cluster. Devi specificare una zona supportata per il driver CSI Parallelstore.
  • NETWORK_NAME: nome della rete VPC che hai creato in Configura una rete VPC.
  • VERSION: il numero di versione di GKE. Per utilizzare questa funzionalità, devi specificare un numero di versione supportato, ad esempio GKE 1.29 o versioni successive. In alternativa, puoi utilizzare il flag --release-channel e specificare un canale di rilascio.

Abilita il driver CSI di Parallelstore su un cluster esistente

Per abilitare il driver su un cluster GKE Standard esistente, esegui questo comando con Google Cloud CLI:

gcloud container clusters update CLUSTER_NAME \
  --location=LOCATION \
  --update-addons=ParallelstoreCsiDriver=ENABLED

Sostituisci quanto segue:

  • CLUSTER_NAME : il nome del cluster.
  • LOCATION: la zona di Compute Engine contenente il cluster. Devi specificare una zona supportata per il driver CSI Parallelstore.

Assicurati che il cluster GKE sia in esecuzione nella stessa rete VPC che hai configurato in Configura una rete VPC. Per verificare la rete VPC per un cluster GKE, puoi controllare nella consoleGoogle Cloud o tramite il comando gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION).

Disabilita il driver CSI Parallelstore

Puoi disattivare il driver CSI Parallelstore in un cluster Autopilot o Standard esistente utilizzando Google Cloud CLI.

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --update-addons=ParallelstoreCsiDriver=DISABLED

Sostituisci quanto segue:

  • CLUSTER_NAME : il nome del cluster.
  • LOCATION: la zona di Compute Engine contenente il cluster. Devi specificare una zona supportata per il driver CSI Parallelstore.

Utilizzare fsGroup con i volumi Parallelstore

Il driver CSI Parallelstore supporta la modifica della proprietà del gruppo della directory di livello radice del file system montato in modo che corrisponda a un fsGroup richiesto dall'utente specificato in SecurityContext del pod. Questa funzionalità è supportata solo nei cluster GKE versione 1.29.5 o successive oppure versione 1.30.1 o successive.

Risoluzione dei problemi

Per indicazioni sulla risoluzione dei problemi, consulta la pagina Risoluzione dei problemi nella documentazione di Parallelstore.

Passaggi successivi