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 :
- Créez un PersistentVolume qui fait référence à l'instance Managed Lustre.
- Utiliser un objet PersistentVolumeClaim pour accéder au volume
- Créer une charge de travail qui utilise le volume.
Créer un volume persistant
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'
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 champmountPoint
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é.
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.
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.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.
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
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.
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.
Supprimez le pod et l'objet PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvc
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
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
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.