En esta guía se describe cómo conectarse a una instancia de Managed Lustre mediante el controlador CSI de Managed Lustre. De esta forma, puedes acceder a las instancias de Managed Lustre que ya tengas como volúmenes para tus cargas de trabajo con estado de una forma controlada y predecible.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Cloud Managed Lustre y la API de Google Kubernetes Engine. Habilitar APIs
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
- Para obtener información sobre las limitaciones y los requisitos, consulta el [resumen del controlador CSI].
- Asegúrate de habilitar el controlador CSI de Lustre gestionado. Está inhabilitado de forma predeterminada en los clústeres Standard y Autopilot.
Configurar variables de entorno
Define las siguientes variables de entorno:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.PROJECT_ID
: tu Google Cloud ID de proyecto.LUSTRE_NETWORK
: la red Virtual Private Cloud compartida en la que residen tanto el clúster de GKE como la instancia de Lustre gestionada.ZONE
: la zona geográfica de tu clúster de GKE. Por ejemplo,us-central1-a
.
Configurar el controlador de CSI de Managed Lustre
En esta sección se explica cómo habilitar e inhabilitar el controlador CSI de Lustre gestionado, si es necesario.
Habilitar el controlador de CSI de Lustre gestionado en un clúster de GKE nuevo
Para habilitar el controlador CSI de Lustre gestionado al crear un clúster de GKE, sigue estos pasos:
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
Estándar
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=1.33.2-gke.1111000 \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
Habilitar el controlador de CSI de Lustre gestionado en un clúster de GKE
Si quieres habilitar el controlador de CSI de Lustre gestionado en un clúster de GKE, usa el siguiente comando:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--enable-legacy-lustre-port
Una vez que el controlador CSI de Lustre gestionado esté habilitado en tu clúster, puede que observes que se han recreado tus nodos y que los nodos de CPU parecen usar una imagen de GPU en laGoogle Cloud consola o en la salida de la CLI. Por ejemplo:
config:
imageType: COS_CONTAINERD
nodeImageConfig:
image: gke-1330-gke1552000-cos-121-18867-90-4-c-nvda
Este comportamiento es el esperado. La imagen de GPU se reutiliza en los nodos de CPU para instalar de forma segura los módulos del kernel de Lustre gestionado. No se te cobrará de más por el uso de la GPU.
Inhabilitar el controlador de CSI de Managed Lustre
Puedes inhabilitar el controlador CSI de Lustre gestionado en un clúster de GKE con la CLI de Google Cloud.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
Una vez que se haya inhabilitado el controlador CSI, los nodos se volverán a crear automáticamente y los módulos del kernel de Lustre gestionado se desinstalarán de los nodos de GKE.
Acceder a una instancia de Managed Lustre con el controlador de CSI de Managed Lustre
Si ya has aprovisionado una instancia de Managed Lustre en la misma red que tu clúster de GKE, puedes seguir estas instrucciones para aprovisionar de forma estática un PersistentVolume que haga referencia a tu instancia.
En las siguientes secciones se describe el proceso habitual para acceder a una instancia de Lustre gestionada mediante el controlador CSI de Lustre gestionado:
- Crea un PersistentVolume que haga referencia a la instancia de Managed Lustre.
- Usa un PersistentVolumeClaim para acceder al volumen.
- Crea una carga de trabajo que consuma el volumen.
Crear un PersistentVolume
Para localizar tu instancia de Lustre gestionado, ejecuta el siguiente comando.
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}
La salida debería ser similar a la siguiente. Antes de continuar con el siguiente paso, anota los campos Nombre de la instancia de Lustre gestionada, Sistema de archivos y Punto de montaje.
capacityGib: '9000' 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'
Guarda el siguiente manifiesto en un archivo llamado
lustre-pv.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: 9000Gi 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
Haz los cambios siguientes:
storageClassName
: el nombre de tu StorageClass. El valor puede ser una cadena vacía, pero debe cumplir las especificaciones de tu PersistentVolumeClaim.volumeHandle
: el identificador de este volumen.- PROJECT_ID: el ID del proyecto. Google Cloud
- LOCATION: la ubicación zonal de tu instancia de Lustre. Debes especificar una zona admitida para el controlador de CSI de Lustre gestionado.
- INSTANCE_NAME: el nombre de tu instancia de Lustre.
ip
: la dirección IP de tu instancia de Lustre. Puedes obtenerlo del campomountPoint
en la salida del comando anterior.filesystem
: el nombre del sistema de archivos de tu instancia de Managed Lustre.
Para ver la lista completa de los campos admitidos en el objeto PersistentVolume, consulta la documentación de referencia del controlador CSI de Lustre gestionado.
Para crear el PersistentVolume, ejecuta este comando:
kubectl apply -f lustre-pv.yaml
Usa PersistentVolumeClaim para acceder al volumen
Puedes crear un recurso PersistentVolumeClaim que haga referencia a la StorageClass del controlador CSI de Lustre gestionado.
El siguiente archivo de manifiesto muestra un ejemplo de cómo crear un PersistentVolumeClaim en el ReadWriteMany
modo de acceso ,
que hace referencia al StorageClass que ha creado anteriormente.
Guarda el siguiente manifiesto en un archivo llamado
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
Sustituye STORAGE_SIZE por el tamaño de almacenamiento. Por ejemplo,
9000Gi
. Debe coincidir con la especificación de tu PersistentVolume.Para crear el PersistentVolumeClaim, ejecuta este comando:
kubectl create -f lustre-pvc.yaml
Crea una carga de trabajo que consuma el volumen
En esta sección se muestra cómo crear un pod que consuma el recurso PersistentVolumeClaim que has creado anteriormente.
Varios pods pueden compartir el mismo recurso PersistentVolumeClaim.
Guarda el siguiente manifiesto en un archivo llamado
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
Ejecuta el siguiente comando para aplicar el manifiesto al clúster:
kubectl apply -f my-pod.yaml
El pod espera hasta que GKE aprovisione el PersistentVolumeClaim antes de empezar a ejecutarse. Esta operación puede tardar varios minutos en completarse.
Comprueba que el pod se está ejecutando:
kubectl get pods
El Pod puede tardar unos minutos en alcanzar el estado
Running
.El resultado debería ser similar al siguiente:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
Usar fsGroup con volúmenes de Managed Lustre
Puedes cambiar la propiedad del grupo del directorio de nivel raíz del sistema de archivos montado para que coincida con un fsGroup solicitado por el usuario y especificado en el SecurityContext del pod.
Solución de problemas
Para obtener instrucciones sobre cómo solucionar problemas, consulta la página de solución de problemas de la documentación de Lustre gestionado.
Limpieza
Para evitar que se apliquen cargos en tu cuenta de Google Cloud , elimina los recursos de almacenamiento que has creado en esta guía.
Elimina el pod y PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvc
Comprueba el estado de PersistentVolume. Después de eliminar el pod y PersistentVolumeClaim, el PersistentVolume debería mostrar el estado "Released":
kubectl get pv
El resultado debería ser similar al siguiente:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28s
Reutiliza el PersistentVolume. Para reutilizar el PersistentVolume, elimina la referencia de reclamación (
claimRef
):kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'
El PersistentVolume ahora debería mostrar el estado "Available" (Disponible), lo que indica que está listo para enlazarse a un nuevo PersistentVolumeClaim. Comprueba el estado de PersistentVolume:
kubectl get pv
El resultado debería ser similar al siguiente:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19m
Elimina el PersistentVolume si ya no lo necesitas. Si ya no necesitas el PersistentVolume, elimínalo:
kubectl delete pv lustre-pv
Al eliminar el PersistentVolume, no se elimina la instancia de Lustre gestionada subyacente.