Questa guida descrive come creare un nuovo volume Kubernetes supportato da un driver CSI Parallelstore in GKE con il provisioning dinamico. In questo modo puoi creare spazio di archiviazione basato su istanze Parallelstore completamente gestite on demand e accedervi come volumi per i tuoi carichi di lavoro con stato.
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à,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
- Per limitazioni e requisiti, consulta la panoramica del driver CSI.
- Configura una rete VPC.
- Se vuoi utilizzare un cluster GKE Standard, assicurati di abilitare il driver CSI.
Creare un nuovo volume utilizzando il driver CSI Parallelstore
Le seguenti sezioni descrivono la procedura tipica per creare un volume Kubernetes supportato da un driver CSI Parallelstore in GKE:
- (Facoltativo) Crea un StorageClass.
- Utilizza un oggetto PersistentVolumeClaim per accedere al volume.
- (Facoltativo) Configura le risorse per il contenitore sidecar.
- Crea un workload che consumi 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. Questo StorageClass indica al driver CSI di eseguire il provisioning delle istanze Parallelstore nella stessa regione del tuo cluster GKE per garantire prestazioni I/O ottimali.
Se vuoi, puoi creare un StorageClass personalizzato con una topologia specifica. Per farlo, segui questi passaggi:
Salva il seguente manifest StorageClass in un file denominato
parallelstore-class.yaml
: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 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.
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 classe di archiviazione del driver CSI Parallelstore.
Il seguente file manifest mostra un esempio di come creare un
claim di volume permanente in ReadWriteMany
modalità di accesso
che fa riferimento alla classe di archiviazione 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 4.000 GiB).Crea il PersistentVolumeClaim eseguendo questo comando:
kubectl create -f parallelstore-pvc.yaml
(Facoltativo) Configura le risorse per il contenitore sidecar
Quando crei un pod di lavoro che utilizza volumi basati su 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 inietta automaticamente un contenitore sidecar denominato gke-parallelstore-sidecar
nel tuo pod. Questo container sidecar monta l'istanza Parallelstore al tuo
caricamento di lavoro.
Per impostazione predefinita, GKE configura il contenitore sidecar con le seguenti richieste di risorse, senza impostare i 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'annotazionegke-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
Tieni presenti le seguenti considerazioni quando decidi la quantità di risorse da allocare:
- Se uno dei valori di richiesta o limite è impostato e un altro non è impostato, entrambi verranno impostati sullo stesso valore specificato.
- Se i tuoi carichi di lavoro richiedono una maggiore throughput, alloca più CPU al contenitore sidecar. Una CPU insufficiente causerà il throttling I/O.
- Puoi utilizzare il valore "0" per annullare l'impostazione di eventuali limiti di risorse sui cluster standard. Ad esempio,
gke-parallelstore/memory-limit: "0"
rimuove il limite di memoria per il contenitore sidecar. Questa opzione è utile quando non puoi decidere sulla quantità di risorse di cuigke-parallelstore-sidecar
ha bisogno per i tuoi carichi di lavoro e vuoi consentire al sidecar di consumare tutte le risorse disponibili su un nodo.
Crea un carico di lavoro che consumi 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 il seguente comando per applicare il manifest al cluster.
kubectl apply -f my-pod.yaml
Il pod attenderà il provisioning del PersistentVolumeClaim prima di iniziare a funzionare. Il completamento di questa operazione potrebbe richiedere diversi minuti.
Gestire il driver CSI Parallelstore
Questa sezione spiega come attivare e disattivare il driver CSI Parallelstore, se necessario.
Attivare 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 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.
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.
Attivare 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 cluster.
- LOCATION: la zona 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 Configurare una rete VPC. Per verificare la rete VPC di un cluster GKE, puoi controllare nella console Google Cloud o tramite il comando gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
.
Disattivare il driver CSI Parallelstore
Puoi disattivare il driver CSI Parallelstore su 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 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à di gruppo della directory di primo livello del file system montato in modo che corrisponda a un gruppo fs richiesto dall'utente specificato nel SecurityContext del pod. Questa funzionalità è supportata solo nei cluster GKE versione 1.29.5 o successive o 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
- Consulta la documentazione di riferimento di Parallelstore CSI.
- Scopri come utilizzare la libreria di intercettazione Parallelstore per migliorare il rendimento del carico di lavoro.
- Scopri come trasferire i dati in Parallelstore da Cloud Storage.
- Scopri come utilizzare GKE Volume Populator per automatizzare il trasferimento dei dati da un bucket Cloud Storage di origine a un PersistentVolumeClaim di destinazione supportato da un'istanza Parallelstore.
- Prova il tutorial per addestrare un modello TensorFlow con Keras su GKE.