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 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
.
- Consulta la panoramica del driver CSI per limitazioni e requisiti.
- Configura una rete VPC.
- Se vuoi utilizzare un cluster GKE Standard, assicurati di abilitare il driver CSI.
Crea un nuovo volume utilizzando il driver CSI Parallelstore
Le sezioni seguenti descrivono la procedura tipica per creare un volume Kubernetes supportato da un driver CSI Parallelstore in GKE:
- (Facoltativo) Crea una StorageClass.
- Usa un oggetto PersistentVolumeClaim per accedere al volume.
- (Facoltativo) Configura le risorse per il container sidecar.
- Crea un workload che utilizzi il volume.
(Facoltativo) Crea 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 I/O ottimali.
Se vuoi, puoi creare una StorageClass personalizzata con una topologia specifica. Per farlo, segui questi passaggi:
Salva il seguente manifest StorageClass in un file denominato
parallelstore-class.yaml
:Supporto per 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 che contiene 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 CSI Parallelstore.
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 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 con la modalità sidecar).
Di conseguenza, puoi eseguire più pod condividendo la stessa istanza di Parallelstore.
Nota:questa funzionalità viene attivata specificando il parametro 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 viene impostato il valore della richiesta o il limite e l'altro non viene 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: 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 che contiene 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 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 in StorageClass, consulta la documentazione di riferimento di CSI Parallelstore.
Crea StorageClass eseguendo questo comando:
kubectl create -f parallelstore-class.yaml
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.
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 le dimensioni dello spazio di archiviazione, ad esempio
12000Gi
. Il valore deve essere compreso tra 12.000 GiB e 100.000 GiB (in multipli di 4000 GiB).Crea l'oggetto PersistentVolumeClaim eseguendo questo comando:
kubectl create -f parallelstore-pvc.yaml
(Facoltativo) Configura le risorse per il contenitore sidecar
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, GKE configura il container sidecar 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 è, entrambi verranno impostati 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 l'impostazione di eventuali 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 cuigke-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.
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
Esegui questo comando 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.
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
- Esplora la documentazione di riferimento del driver CSI Parallelstore.
- Scopri come utilizzare la libreria di intercettazione Parallelstore per migliorare il rendimento del carico di lavoro.
- Scopri come trasferire i dati a Parallelstore da Cloud Storage.
- Scopri come utilizzare GKE Volume Populator per automatizzare il trasferimento dei dati da un archivio di origine del bucket Cloud Storage a una PersistentVolumeClaim di destinazione supportata da un'istanza Parallelstore.
- Prova il tutorial per addestrare un modello TensorFlow con Keras su GKE.