Accéder à des instances Parallelstore existantes à l'aide du pilote CSI Parallelstore GKE


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

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 :

  1. Créer un PersistentVolume qui fait référence à l'instance Parallelstore.
  2. Utiliser un 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.

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.

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

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

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