Ce guide explique comment créer un volume Kubernetes reposant sur un pilote CSI Parallelstore dans GKE avec le provisionnement dynamique. Vous pouvez ainsi créer du stockage à la demande avec des instances Parallelstore entièrement gérées et y accéder en tant que volumes pour vos charges de travail avec état.
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.
- Configurez un réseau VPC.
- Si vous souhaitez utiliser un cluster GKE Standard, veillez à activer le pilote CSI.
Créer un volume à l'aide du pilote CSI Parallelstore
Les sections suivantes décrivent la procédure de création standard d'un volume Kubernetes reposant sur un pilote CSI dans GKE :
- (Facultatif) Créer un objet StorageClass.
- Utiliser un objet 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.
(Facultatif) Créer une classe de stockage
Lorsque le pilote CSI Parallelstore est activé, GKE crée automatiquement un objet StorageClass nommé parallelstore-rwx
pour le provisionnement d'instances Parallelstore. Cet objet StorageClass indique au pilote CSI de provisionner des instances Parallelstore dans la même région que votre cluster GKE afin d'optimiser les performances d'E/S.
Vous pouvez également créer un objet StorageClass personnalisé avec une topologie spécifique. Pour cela, procédez comme suit :
Enregistrez le fichier manifeste suivant de l'objet StorageClass dans un fichier nommé
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
Remplacez les éléments suivants :
- LOCATION : zone Compute Engine contenant le cluster. Vous devez spécifier une zone compatible pour le pilote CSI Parallelstore.
Pour obtenir la liste complète des champs compatibles avec l'objet StorageClass, consultez la documentation de référence sur le CSI Parallelstore.
Créez l'objet StorageClass en exécutant la commande suivante :
kubectl create -f parallelstore-class.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
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: parallelstore-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: STORAGE_SIZE storageClassName: parallelstore-class
Remplacez STORAGE_SIZE par la taille de stockage, par exemple
12000Gi
. La valeur doit être comprise entre 12 000 Gio et 100 000 Gio (en multiples de 4 000 Gio).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, GKE configure le conteneur side-car 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, elles sont toutes les deux définies 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 utilisation insuffisante du processeur 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 sidecar. 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 le PersistentVolumeClaim soit provisionné 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 page Dépannage de la documentation 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 de la charge 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.