Ce guide explique comment vous connecter à une instance Parallelstore existante avec le pilote CSI Parallelstore GKE avec provisionnement statique. Vous pouvez ainsi accéder aux instances Parallelstore entièrement gérées existantes en tant que volumes pour vos charges de travail avec état, de manière contrôlée et prévisible.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
- Consultez la présentation du pilote CSI pour connaître les limites et les conditions requises.
- Créez une instance Parallelstore si vous ne l'avez pas déjà fait.
- Configurez un réseau VPC.
- Si vous souhaitez utiliser un cluster GKE Standard, veillez à activer le pilote CSI.
Accéder à une instance Parallelstore existante à l'aide du pilote CSI Parallelstore
Si vous avez déjà provisionné une instance Parallelstore sur le même réseau que votre cluster GKE, vous pouvez suivre ces instructions pour provisionner de manière statique un PersistentVolume qui fait référence à votre instance.
Les sections suivantes décrivent la procédure standard d'accès à une instance Parallelstore existante à l'aide du pilote CSI Parallelstore :
- Créer un PersistentVolume qui fait référence à l'instance Parallelstore.
- Utiliser un PersistentVolumeClaim pour accéder au volume.
- (Facultatif) Configurer des ressources pour le conteneur side-car.
- Créer une charge de travail qui utilise le volume.
Créer un volume persistant
Cette section présente un exemple de création d'un PersistentVolume qui fait référence à une instance Parallelstore existante.
Exécutez la commande suivante pour localiser votre instance Parallelstore.
gcloud beta parallelstore instances list \ --project=PROJECT_ID \ --location=LOCATION
Remplacez les éléments suivants :
- PROJECT_ID : ID de projet Google Cloud.
- LOCATION : zone Compute Engine contenant le cluster. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
Le résultat doit ressembler à ce qui suit. Veillez à noter le nom de l'instance Parallelstore et les points d'accès IP avant de passer à l'étape suivante.
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
Enregistrez le fichier manifeste suivant dans un fichier nommé
parallelstore-pv.yaml
: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
Remplacez les éléments suivants :
- PROJECT_ID : ID de projet Google Cloud
- LOCATION : emplacement zonal de votre instance Parallelstore. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
- INSTANCE_NAME : nom de votre instance Parallelstore. Exemple de valeur
volumeHandle
valide :"my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
- ACCESS_POINTS : points d'accès de votre instance Parallelstore, par exemple
10.51.110.2,10.51.110.4,10.51.110.3
. - NETWORK_NAME : réseau VPC sur lequel votre instance Parallelstore est accessible.
- STORAGECLASS_NAME : nom de votre StorageClass. Il peut s'agir d'une chaîne vide, mais elle doit correspondre à la spécification de votre PersistentVolumeClaim.
- STORAGE_SIZE : taille de l'espace de stockage, par exemple
12000Gi
.
Pour obtenir la liste complète des champs compatibles dans l'objet PersistentVolume, consultez la documentation de référence sur le pilote CSI Parallelstore.
Créez le PersistentVolume en exécutant la commande suivante :
kubectl apply -f parallelstore-pv.yaml
Utiliser un objet PersistentVolumeClaim pour accéder au volume
Vous pouvez créer une ressource PersistentVolumeClaim qui référence la StorageClass du pilote CSI Parallelstore.
Le fichier manifeste suivant montre un exemple de création d'un PersistentVolumeClaim en mode d'accès ReadWriteMany
qui référence la StorageClass que vous avez créée précédemment.
Enregistrez le fichier manifeste suivant dans un fichier nommé
parallelstore-pvc.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany storageClassName: STORAGECLASS_NAME volumeName: parallelstore-pv resources: requests: storage: STORAGE_SIZE
Remplacez les éléments suivants :
- STORAGECLASS_NAME : nom de votre StorageClass. Il doit correspondre à la spécification de votre PersistentVolume.
- STORAGE_SIZE : taille de l'espace de stockage, par exemple
12000Gi
. Il doit correspondre à la spécification de votre PersistentVolume.
Créez la PersistentVolumeClaim en exécutant la commande suivante :
kubectl create -f parallelstore-pvc.yaml
(Facultatif) Configurer des ressources pour le conteneur side-car
Lorsque vous créez un pod de charge de travail qui utilise des volumes reposant sur Parallelstore, le pilote CSI détermine si votre volume est basé sur des instances Parallelstore.
Si le pilote détecte que votre volume est basé sur Parallelstore ou si vous spécifiez l'annotation gke-parallelstore/volumes: "true"
, le pilote CSI injecte automatiquement un conteneur side-car nommé gke-parallelstore-sidecar
dans votre pod. Ce conteneur side-car installe l'instance Parallelstore sur votre charge de travail.
Par défaut, le conteneur side-car est configuré avec les demandes de ressources suivantes, sans que les limites de ressources soient définies :
- 250 mCPU
- 512 Mio de mémoire
- 10 Mio de stockage éphémère
Pour écraser ces valeurs, vous pouvez éventuellement spécifier l'annotation gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request]
comme illustré dans l'exemple suivant :
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
Prenez en compte les éléments suivants lorsque vous déterminez la quantité de ressources à allouer :
- Si l'une des valeurs de demande ou de limite est définie et qu'une autre n'est pas définie, GKE les définit toutes les deux sur la même valeur spécifiée.
- Allouez plus de processeurs au conteneur side-car si vos charges de travail nécessitent un débit plus élevé. Une insuffisance de CPU entraînera une limitation des E/S.
- Vous pouvez utiliser la valeur "0" pour annuler la définition de limites de ressources sur les clusters Standard. Par exemple,
gke-parallelstore/memory-limit: "0"
supprime la limite de mémoire pour le conteneur side-car. Cela s'avère utile lorsque vous ne pouvez pas déterminer la quantité de ressources dontgke-parallelstore-sidecar
a besoin pour vos charges de travail et que vous souhaitez laisser le side-car utiliser toutes les ressources disponibles sur un nœud.
Créer un pod qui utilise le volume
Cette section présente un exemple de création d'un pod qui utilise la ressource PersistentVolumeClaim que vous avez créée précédemment.
Plusieurs pods peuvent partager la même ressource PersistentVolumeClaim.
Enregistrez le fichier manifeste suivant dans un fichier nommé
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
Exécutez la commande suivante pour appliquer le fichier manifeste au cluster :
kubectl apply -f my-pod.yaml
Le pod attend que GKE provisionne le PersistentVolumeClaim avant de commencer à s'exécuter. Cette opération peut prendre plusieurs minutes.
Gérer le pilote CSI Parallelstore
Cette section explique comment activer et désactiver le pilote CSI Parallelstore, si nécessaire.
Activer le pilote CSI Parallelstore sur un nouveau cluster
Pour activer le pilote CSI Parallelstore lorsque vous créez un cluster Standard, exécutez la commande suivante avec Google Cloud CLI :
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--network=NETWORK_NAME \
--addons=ParallelstoreCsiDriver \
--cluster-version=VERSION
Remplacez les éléments suivants :
- CLUSTER_NAME : nom du cluster
- LOCATION : zone Compute Engine contenant le cluster. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
- NETWORK_NAME : nom du réseau VPC que vous avez créé dans Configurer un réseau VPC.
- VERSION : numéro de version de GKE.
Vous devez spécifier un numéro de version compatible pour utiliser cette fonctionnalité, par exemple GKE version 1.29 ou ultérieure. Vous pouvez également utiliser l'option
--release-channel
et spécifier un canal de publication.
Activer le pilote CSI Parallelstore sur un cluster existant
Pour activer le pilote sur un cluster GKE Standard existant, exécutez la commande suivante avec Google Cloud CLI :
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=ENABLED
Remplacez les éléments suivants :
- CLUSTER_NAME : le nom du cluster
- LOCATION : zone Compute Engine contenant le cluster. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
Assurez-vous que votre cluster GKE s'exécute dans le même réseau VPC que celui que vous avez configuré dans Configurer un réseau VPC. Pour vérifier le réseau VPC d'un cluster GKE, vous pouvez consulter la console Google Cloud ou utiliser la commande gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION)
.
Désactiver le pilote CSI Parallelstore
Vous pouvez désactiver le pilote CSI Parallelstore sur un cluster Autopilot ou Standard existant à l'aide de Google Cloud CLI.
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--update-addons=ParallelstoreCsiDriver=DISABLED
Remplacez les éléments suivants :
- CLUSTER_NAME : le nom du cluster
- LOCATION : zone Compute Engine contenant le cluster. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
Utiliser fsGroup avec des volumes Parallelstore
Le pilote CSI Parallelstore permet de modifier la propriété de groupe du répertoire racine du système de fichiers installé pour qu'il corresponde à un fsGroup demandé par l'utilisateur et spécifié dans le SecurityContext du pod. Cette fonctionnalité n'est compatible qu'avec les clusters GKE version 1.29.5 ou ultérieure, ou version 1.30.1 ou ultérieure.
Dépannage
Pour obtenir des conseils de dépannage, consultez la section Dépannage dans la documentation de Parallelstore.
Étape suivante
- Consultez la documentation de référence sur le CSI Parallelstore.
- Découvrez comment utiliser la bibliothèque d'interception Parallelstore pour améliorer les performances des charges de travail.
- Découvrez comment transférer des données vers Parallelstore depuis Cloud Storage.
- Suivez le tutoriel pour entraîner un modèle TensorFlow avec Keras sur GKE.