Accedere alle istanze Managed Lustre esistenti su GKE utilizzando il driver CSI Managed Lustre


Questa guida descrive come connettersi a un'istanza Managed Lustre esistente utilizzando il driver CSI Managed Lustre. In questo modo, puoi accedere alle istanze Managed Lustre esistenti come volumi per i tuoi workload stateful in modo controllato e prevedibile.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Cloud Managed Lustre e l'API Google Kubernetes Engine.
  • Abilita le API
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installala e poi inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo gcloud components update.
  • Per limitazioni e requisiti, consulta la [panoramica del driver CSI].
  • Assicurati di abilitare il driver CSI Lustre gestito. È disabilitato per impostazione predefinita nei cluster Standard e Autopilot.

Imposta le variabili di ambiente

Imposta le seguenti variabili di ambiente:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster.
  • PROJECT_ID: il tuo Trusted Cloud by S3NS ID progetto.
  • LUSTRE_NETWORK: la rete Virtual Private Cloud condivisa in cui si trovano sia il cluster GKE sia l'istanza Managed Lustre.
  • ZONE: la zona geografica del tuo cluster GKE; ad esempio, us-central1-a.

Configura il driver CSI Managed Lustre

Questa sezione spiega come attivare e disattivare il driver CSI Lustre gestito, se necessario.

Abilita il driver CSI di Managed Lustre su un nuovo cluster GKE

Per abilitare il driver CSI di Managed Lustre durante la creazione di un nuovo cluster GKE, segui questi passaggi:

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

Abilita il driver CSI di Managed Lustre su un cluster GKE esistente

Se vuoi abilitare il driver CSI Lustre gestito su un cluster GKE esistente, utilizza il seguente comando:

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

Dopo aver abilitato il driver CSI Managed Lustre nel cluster, potresti notare che i nodi sono stati ricreati e che i nodi CPU sembrano utilizzare un'immagine GPU nell'output della console o della CLITrusted Cloud . Ad esempio:

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

Si tratta di un comportamento normale. L'immagine GPU viene riutilizzata sui nodi CPU per <x0A>installare in modo sicuro i moduli kernel di Managed Lustre. Non ti verrà addebitato un importo eccessivo per l'utilizzo della GPU.

Disabilita il driver CSI Lustre gestito

Puoi disattivare il driver CSI di Managed Lustre su un cluster GKE esistente utilizzando Google Cloud CLI.

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

Una volta disattivato il driver CSI, i nodi verranno ricreati automaticamente e i moduli kernel Lustre gestiti verranno disinstallati dai nodi GKE.

Accedere a un'istanza Managed Lustre esistente utilizzando il driver CSI Managed Lustre

Se hai già eseguito il provisioning di un'istanza Managed Lustre all'interno della stessa rete del tuo cluster GKE, puoi seguire queste istruzioni per eseguire il provisioning statico di un PersistentVolume che fa riferimento alla tua istanza.

Le sezioni seguenti descrivono la procedura tipica per accedere a un'istanza Managed Lustre esistente utilizzando il driver CSI Managed Lustre:

  1. Crea un PersistentVolume che faccia riferimento all'istanza Managed Lustre.
  2. Usa un oggetto PersistentVolumeClaim per accedere al volume.
  3. Crea un workload che utilizzi il volume.

Crea un PersistentVolume

  1. Per individuare l'istanza di Managed Lustre, esegui questo comando.

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

    L'output dovrebbe essere simile al seguente. Prima di procedere con il passaggio successivo, assicurati di annotare i campi Managed Lustre instance name, filesystem e 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. Salva il seguente manifest in un file denominato 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
    

    Sostituisci quanto segue:

    • storageClassName: il nome di StorageClass. Il valore può essere una stringa vuota, ma deve soddisfare la specifica del PersistentVolumeClaim.
    • volumeHandle: l'identificatore di questo volume.
      • PROJECT_ID: l' Trusted Cloud by S3NS ID progetto.
      • LOCATION: la posizione zonale dell'istanza Lustre. Devi specificare una zona supportata per il driver CSI Lustre gestito.
      • INSTANCE_NAME: il nome dell'istanza Lustre.
    • ip: l'indirizzo IP della tua istanza Lustre. Ottieni questo valore dal campo mountPoint nell'output del comando precedente.
    • filesystem: il nome del file system dell'istanza Managed Lustre.

    Per l'elenco completo dei campi supportati nell'oggetto PersistentVolume, consulta la documentazione di riferimento del driver CSI Managed Lustre.

  3. Crea PersistentVolume eseguendo questo comando:

    kubectl apply -f lustre-pv.yaml
    

Utilizza PersistentVolumeClaim per accedere al volume

Puoi creare una risorsa PersistentVolumeClaim che fa riferimento a StorageClass del driver CSI Managed Lustre.

Il seguente file manifest mostra un esempio di come creare un PersistentVolumeClaim nella ReadWriteMany modalità di accesso , che fa riferimento alla StorageClass creata in precedenza.

  1. Salva il seguente manifest in un file denominato 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
    

    Sostituisci STORAGE_SIZE con le dimensioni dello spazio di archiviazione, ad esempio 18000Gi. Deve corrispondere alla specifica nel tuo PersistentVolume.

  2. Crea l'oggetto PersistentVolumeClaim eseguendo questo comando:

      kubectl create -f lustre-pvc.yaml
    

Crea un workload che utilizzi il volume

Questa sezione mostra come creare un pod che utilizza la risorsa PersistentVolumeClaim creata in precedenza.

Più pod possono condividere la stessa risorsa PersistentVolumeClaim.

  1. Salva il seguente manifest in un file denominato 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. Esegui questo comando per applicare il manifest al cluster:

      kubectl apply -f my-pod.yaml
    

    Il pod attende che GKE esegua il provisioning di PersistentVolumeClaim prima di iniziare l'esecuzione. Il completamento di questa operazione potrebbe richiedere diversi minuti.

  3. Verifica che il pod sia in esecuzione:

      kubectl get pods
    

    Potrebbero essere necessari alcuni minuti prima che il pod raggiunga lo stato Running.

    L'output è simile al seguente:

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

Utilizzare fsGroup con i volumi Managed Lustre

Puoi modificare la proprietà del gruppo della directory di livello radice del file system montato in modo che corrisponda a un fsGroup richiesto dall'utente specificato in SecurityContext del pod.

Risoluzione dei problemi

Per indicazioni sulla risoluzione dei problemi, consulta la pagina Risoluzione dei problemi nella documentazione di Managed Lustre.

Esegui la pulizia

Per evitare che al tuo account Trusted Cloud by S3NS vengano addebitati costi, elimina le risorse di archiviazione che hai creato in questa guida.

  1. Elimina il pod e PersistentVolumeClaim.

    kubectl delete pod my-pod
    kubectl delete pvc lustre-pvc
    
  2. Controlla lo stato di PersistentVolume. Dopo aver eliminato il pod e PersistentVolumeClaim, PersistentVolume dovrebbe segnalare lo stato "Released":

    kubectl get pv
    

    L'output è simile al seguente:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                 STORAGECLASS   REASON   AGE
    lustre-pv   18000Gi      RWX            Retain        Released   default/preprov-pvc                           2m28s
    
  3. Riutilizza il PersistentVolume. Per riutilizzare PersistentVolume, rimuovi il riferimento alla richiesta (claimRef):

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

    PersistentVolume dovrebbe ora segnalare lo stato "Disponibile", a indicare che è pronto per essere associato a un nuovo PersistentVolumeClaim. Controlla lo stato di PersistentVolume:

    kubectl get pv
    

    L'output è simile al seguente:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    lustre-pv   18000Gi      RWX           Retain         Available                                   19m
    
  4. Elimina PersistentVolume se non è più necessario. Se PersistentVolume non è più necessario, eliminalo:

    kubectl delete pv lustre-pv
    

    L'eliminazione di PersistentVolume non rimuove l'istanza Managed Lustre sottostante.

Passaggi successivi