Créer et utiliser un volume basé sur une instance Parallelstore dans Google Kubernetes Engine


Parallelstore n'est disponible que sur invitation. Si vous souhaitez demander l'accès à Parallelstore dans votre projet Google Cloud, contactez votre représentant commercial.

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.

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 :

  1. (Facultatif) Créer un objet StorageClass.
  2. Utiliser un objet PersistentVolumeClaim pour accéder au volume
  3. (Facultatif) Configurer des ressources pour le conteneur side-car.
  4. 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 :

  1. 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.

  2. 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.

  1. 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).

  2. 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 dont gke-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.

  1. 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
    
  2. 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