Accéder à des instances Managed Lustre existantes sur GKE à l'aide du pilote CSI Managed Lustre


Ce guide explique comment vous connecter à une instance Managed Lustre existante à l'aide du pilote CSI Managed Lustre. Vous pouvez ainsi accéder aux instances Managed Lustre 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 Cloud Managed Lustre et l'API Google Kubernetes Engine.
  • Activer les API
  • 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.
  • Pour connaître les limites et les conditions requises, consultez la [présentation du pilote CSI].
  • Assurez-vous d'activer le pilote CSI Lustre géré. Il est désactivé par défaut dans les clusters Standard et Autopilot.

Configurer des variables d'environnement

Configurez les variables d'environnement suivantes :

export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • PROJECT_ID : ID de votre projet Trusted Cloud by S3NS .
  • LUSTRE_NETWORK : réseau cloud privé virtuel partagé dans lequel résident le cluster GKE et l'instance Managed Lustre.
  • ZONE : zone géographique de votre cluster GKE (par exemple, us-central1-a).

Configurer le pilote CSI Lustre géré

Cette section explique comment activer et désactiver le pilote CSI Managed Lustre, si nécessaire.

Activer le pilote CSI Lustre géré sur un nouveau cluster GKE

Pour activer le pilote CSI Managed Lustre lorsque vous créez un cluster GKE, procédez comme suit :

Autopilot

gcloud container clusters create-auto "${CLUSTER_NAME}" \
    --location=${LOCATION} \
    --network="${NETWORK_NAME}" \
    --cluster-version=1.33.2-gke.1111000 \
    --enable-lustre-csi-driver \
    --enable-legacy-lustre-port

Standard

gcloud container clusters create "${CLUSTER_NAME}" \
    --location=${LOCATION} \
    --network="${NETWORK_NAME}" \
    --cluster-version=1.33.2-gke.1111000 \
    --addons=LustreCsiDriver \
    --enable-legacy-lustre-port

Activer le pilote CSI Lustre géré sur un cluster GKE existant

Pour activer le pilote CSI Managed Lustre sur un cluster GKE existant, utilisez la commande suivante :

gcloud container clusters update ${CLUSTER_NAME} \
    --location=${LOCATION} \
    --enable-legacy-lustre-port

Une fois le pilote CSI Managed Lustre activé dans votre cluster, vous remarquerez peut-être que vos nœuds ont été recréés et que les nœuds de processeur semblent utiliser une image GPU dans la sortie de la consoleTrusted Cloud ou de la CLI. Exemple :

config:
  imageType: COS_CONTAINERD
  nodeImageConfig:
    image: gke-1330-gke1552000-cos-121-18867-90-4-c-nvda

Ce comportement est normal. L'image GPU est réutilisée sur les nœuds de processeur pour installer de manière sécurisée les modules de noyau Lustre gérés. L'utilisation du GPU ne vous sera pas facturée en trop.

Désactiver le pilote CSI Lustre géré

Vous pouvez désactiver le pilote CSI Managed Lustre sur un cluster GKE existant à l'aide de Google Cloud CLI.

gcloud container clusters update ${CLUSTER_NAME} \
    --location=${LOCATION} \
    --update-addons=LustreCsiDriver=DISABLED

Une fois le pilote CSI désactivé, vos nœuds seront automatiquement recréés et les modules de noyau Lustre gérés seront désinstallés de vos nœuds GKE.

Accéder à une instance Managed Lustre existante à l'aide du pilote CSI Managed Lustre

Si vous avez déjà provisionné une instance Managed Lustre 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 Managed Lustre existante à l'aide du pilote CSI Managed Lustre :

  1. Créez un PersistentVolume qui fait référence à l'instance Managed Lustre.
  2. Utiliser un objet PersistentVolumeClaim pour accéder au volume
  3. Créer une charge de travail qui utilise le volume.

Créer un volume persistant

  1. Pour localiser votre instance Managed Lustre, exécutez la commande suivante.

    gcloud lustre instances list \
        --project=${PROJECT_ID} \
        --location=${LOCATION}
    

    Le résultat doit ressembler à ce qui suit. Avant de passer à l'étape suivante, veillez à noter les champs Nom de l'instance Lustre gérée, système de fichiers et mountPoint.

    capacityGib: '18000'
    createTime: '2025-04-28T22:42:11.140825450Z'
    filesystem: testlfs
    gkeSupportEnabled: true
    mountPoint: 10.90.1.4@tcp:/testlfs
    name: projects/my-project/locations/us-central1-a/instances/my-lustre
    network: projects/my-project/global/networks/default
    perUnitStorageThroughput: '1000'
    state: ACTIVE
    updateTime: '2025-04-28T22:51:41.559098631Z'
    
  2. Enregistrez le fichier manifeste suivant dans un fichier nommé lustre-pv.yaml :

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: lustre-pv
    spec:
      storageClassName: "STORAGE_CLASS_NAME"
      capacity:
        storage: 18000Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      claimRef:
        namespace: default
        name: lustre-pvc
      csi:
        driver: lustre.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME"
      volumeAttributes:
        ip: IP_ADDRESS
        filesystem: FILESYSTEM
    

    Remplacez les éléments suivants :

    • storageClassName : nom de votre StorageClass. La valeur peut être une chaîne vide, mais elle doit correspondre à la spécification de votre PersistentVolumeClaim.
    • volumeHandle : identifiant de ce volume.
      • PROJECT_ID : ID du projet Trusted Cloud by S3NS .
      • LOCATION : emplacement zonal de votre instance Lustre. Vous devez spécifier une zone compatible pour le pilote CSI Lustre géré.
      • INSTANCE_NAME : nom de votre instance Lustre.
    • ip : adresse IP de votre instance Lustre. Vous l'obtiendrez à partir du champ mountPoint dans la sortie de la commande précédente.
    • filesystem : nom du système de fichiers de votre instance Managed Lustre.

    Pour obtenir la liste complète des champs compatibles dans l'objet PersistentVolume, consultez la documentation de référence sur le pilote CSI Lustre géré.

  3. Créez le PersistentVolume en exécutant la commande suivante :

    kubectl apply -f lustre-pv.yaml
    

Utiliser l'objet PersistentVolumeClaim pour accéder au volume

Vous pouvez créer une ressource PersistentVolumeClaim qui référence la StorageClass du pilote CSI Managed Lustre.

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é lustre-pvc.yaml :

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: lustre-pvc
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: "STORAGE_CLASS_NAME"
        volumeName: lustre-pv
        resources:
          requests:
            storage: STORAGE_SIZE
    

    Remplacez STORAGE_SIZE par la taille de stockage, par exemple 18000Gi. Il doit correspondre à la spécification de votre PersistentVolume.

  2. Créez la PersistentVolumeClaim en exécutant la commande suivante :

      kubectl create -f lustre-pvc.yaml
    

Créer un pod qui utilise le volume

Cette section explique comment créer 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: lustre-volume
              mountPath: /data
        volumes:
        - name: lustre-volume
          persistentVolumeClaim:
            claimName: lustre-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.

  3. Vérifiez qu'il est en cours d'exécution :

      kubectl get pods
    

    Il peut s'écouler quelques minutes avant que le pod n'atteigne l'état Running.

    Le résultat ressemble à ce qui suit :

      NAME           READY   STATUS    RESTARTS   AGE
      my-pod         1/1     Running   0          11s
    

Utiliser fsGroup avec des volumes Managed Lustre

Vous pouvez modifier la propriété de groupe du répertoire racine du système de fichiers installé pour qu'elle corresponde à un fsGroup demandé par l'utilisateur et spécifié dans le SecurityContext du pod.

Dépannage

Pour obtenir des conseils de dépannage, consultez la page Dépannage de la documentation Managed Lustre.

Effectuer un nettoyage

Pour éviter que des frais ne soient facturés sur votre compte Trusted Cloud by S3NS , supprimez les ressources de stockage que vous avez créées dans ce guide.

  1. Supprimez le pod et l'objet PersistentVolumeClaim.

    kubectl delete pod my-pod
    kubectl delete pvc lustre-pvc
    
  2. Vérifiez l'état de PersistentVolume. Après avoir supprimé le pod et la PersistentVolumeClaim, le PersistentVolume devrait afficher l'état "Libéré" :

    kubectl get pv
    

    Le résultat ressemble à ce qui suit :

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                 STORAGECLASS   REASON   AGE
    lustre-pv   18000Gi      RWX            Retain        Released   default/preprov-pvc                           2m28s
    
  3. Réutilisez le PersistentVolume. Pour réutiliser le PersistentVolume, supprimez la référence de revendication (claimRef) :

    kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'
    

    Le PersistentVolume devrait maintenant afficher l'état "Disponible", ce qui indique qu'il est prêt à être lié à un nouveau PersistentVolumeClaim. Vérifiez l'état du PersistentVolume :

    kubectl get pv
    

    Le résultat ressemble à ce qui suit :

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    lustre-pv   18000Gi      RWX           Retain         Available                                   19m
    
  4. Supprimez le PersistentVolume s'il n'est plus nécessaire. Si le PersistentVolume n'est plus nécessaire, supprimez-le :

    kubectl delete pv lustre-pv
    

    La suppression du PersistentVolume n'entraîne pas la suppression de l'instance Managed Lustre sous-jacente.

Étapes suivantes