Creare e connettersi a un'istanza Parallelstore da Google Kubernetes Engine

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

Questa guida descrive come creare un nuovo volume Kubernetes supportato da un driver CSI Parallelstore in GKE con provisioning dinamico. In questo modo, puoi creare spazio di archiviazione supportato da istanze Parallelstore completamente gestite on demand e accedervi come volumi per i carichi di lavoro stateful.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Parallelstore e l'API Kubernetes Engine.
  • Abilita le API
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il gcloud components update comando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.

Creare un nuovo volume utilizzando il driver CSI Parallelstore

Le sezioni seguenti descrivono la procedura tipica per la creazione di un volume Kubernetes supportato da un driver CSI Parallelstore in GKE:

  1. (Facoltativo) Crea una StorageClass.
  2. Usa un oggetto PersistentVolumeClaim per accedere al volume.
  3. (Facoltativo) Configura le risorse per il container sidecar.
  4. Crea un carico di lavoro che utilizza il volume.

(Facoltativo) Creare una classe di archiviazione

Quando il driver CSI Parallelstore è abilitato, GKE crea automaticamente una StorageClass denominata parallelstore-rwx per il provisioning delle istanze Parallelstore. Questa StorageClass indica al driver CSI di eseguire il provisioning delle istanze Parallelstore nella stessa regione del cluster GKE per garantire prestazioni di I/O ottimali.

In alternativa, puoi creare una StorageClass personalizzata con una topologia specifica. Per farlo, segui questi passaggi:

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

    Montaggio del pod

    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
    

    Sostituisci quanto segue:

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

    Per l'elenco completo dei campi supportati in StorageClass, consulta la documentazione di riferimento di Parallelstore CSI.

    Montaggio del nodo

    Il driver CSI Parallelstore consente di montare i volumi direttamente sui nodi. Il montaggio dei nodi è supportato nei 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 dello stesso punto di montaggio migliora la scalabilità perché il numero di montaggi aumenta con il numero di nodi, non con il numero di pod (come nella modalità collaterale).

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

    Nota: questa funzionalità è abilitata specificando il parametro mountLocality: node. Il valore predefinito per la località di montaggio dei pod è mountLocality: pod. I flag di richiesta e limite di CPU e memoria di 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 tutti i limiti delle risorse. Ad esempio, dfuseMemoryLimit: '0' rimuove il limite di memoria per il processo dfuse.
      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
    

    Sostituisci quanto segue:

    • LOCATION: la zona di Compute Engine contenente il cluster. Devi specificare una zona supportata per il driver CSI Parallelstore.
    • 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 di 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 in StorageClass, consulta la documentazione di riferimento di Parallelstore CSI.

  2. Crea la StorageClass eseguendo questo comando:

    kubectl create -f parallelstore-class.yaml
    

Usa un oggetto PersistentVolumeClaim per accedere al volume

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

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

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

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

    Sostituisci STORAGE_SIZE con la dimensione dello spazio di archiviazione, ad esempio 12000Gi. Il valore deve essere compreso tra 12.000 GiB e 100.000 GiB (in multipli di 4.000 GiB).

  2. Crea l'oggetto PersistentVolumeClaim eseguendo questo comando:

      kubectl create -f parallelstore-pvc.yaml
    

(Facoltativo) Configurare le risorse per il container sidecar

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

Quando crei un pod di carico di lavoro che utilizza volumi supportati da Parallelstore, il driver CSI determina se il volume è basato 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 carico di lavoro.

Per impostazione predefinita, GKE configura il container sidecar con le seguenti richieste di risorse, senza limiti di risorse:

  • 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

Quando decidi la quantità di risorse da allocare, tieni presenti le seguenti considerazioni:

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

Creare un carico di lavoro che utilizza 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 il comando seguente per applicare il manifest al cluster.

      kubectl apply -f my-pod.yaml
    

    Il pod attenderà il provisioning di PersistentVolumeClaim prima di iniziare l'esecuzione. Il completamento di questa operazione potrebbe richiedere diversi minuti.

Gestire il driver CSI Parallelstore

Questa sezione spiega come abilitare e disabilitare il driver CSI Parallelstore, se necessario.

Abilitare il driver CSI Parallelstore in un nuovo cluster

Per abilitare il driver CSI Parallelstore durante la creazione di un nuovo cluster Standard, esegui il seguente 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: il nome della rete VPC creata in Configurare una rete VPC.
  • VERSION: il numero di versione di GKE. Devi specificare un numero di versione supportato per utilizzare questa funzionalità, ad esempio GKE versione 1.29 o successive. In alternativa, puoi utilizzare il flag --release-channel e specificare un canale di rilascio.

Abilitare il driver CSI Parallelstore in un cluster esistente

Per abilitare il driver in un cluster GKE Standard esistente, esegui il seguente 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 tuo 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 configurata in Configurare una rete VPC. Per verificare la rete VPC di un cluster GKE, puoi controllare nella Google Cloud console o tramite il comando gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION).

Disabilitare il driver CSI Parallelstore

Puoi disabilitare 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 tuo 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 root del file system montato in modo che corrisponda a un fsGroup richiesto dall'utente specificato in SecurityContext SecurityContext. Questa funzionalità è supportata solo nei cluster GKE versione 1.29.5 o successive o versione 1.30.1 o successive.

Risoluzione dei problemi

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

Passaggi successivi