Questa guida descrive come connetterti a un'istanza Managed Lustre esistente utilizzando il driver Managed Lustre CSI. In questo modo puoi accedere alle istanze Managed Lustre esistenti come volumi per i tuoi workload stateful in modo controllato e prevedibile.
Supporto multi-NIC per il networking ad alte prestazioni
Per i cluster GKE che eseguono la versione 1.35.2-gke.1842000 o successive, il driver Managed Lustre CSI è abilitato per impostazione predefinita per utilizzare tutte le schede di interfaccia di rete (NIC) disponibili per una maggiore velocità effettiva. Questo supporto aggrega la larghezza di banda distribuendo il traffico di archiviazione TCP sulle interfacce di rete.
Per utilizzare il supporto multi-NIC, i nodi devono soddisfare i seguenti requisiti:
- NIC standard per TCP: i nodi devono utilizzare NIC standard, come Google Virtual NIC (gVNIC) o VirtIO-Net, per gestire il traffico di archiviazione TCP.
- Stesso VPC: tutte le NIC standard devono risiedere nella stessa rete VPC.
- Considerazioni su RDMA: ai nodi possono essere collegate anche NIC RDMA; tuttavia, il driver Managed Lustre CSI utilizza solo le NIC standard per il traffico di archiviazione TCP.
Se vuoi disabilitare il supporto multi-NIC, consulta Disabilitare multi-NIC per Lustre.
Porte di comunicazione Lustre
Il driver GKE Managed Lustre CSI utilizza porte diverse per la comunicazione con le istanze Managed Lustre, a seconda della versione del cluster GKE e delle configurazioni Managed Lustre esistenti.
Porta predefinita (consigliata): per i nuovi cluster GKE che eseguono la versione
1.33.2-gke.4780000o successive, il driver utilizza la porta988per la comunicazione Lustre per impostazione predefinita.Porta legacy: utilizza la porta
6988aggiungendo il flag--enable-legacy-lustre-portai comandigcloudnei seguenti scenari:- Versioni GKE precedenti: se il cluster GKE esegue una versione precedente alla
1.33.2-gke.4780000, il flag--enable-legacy-lustre-portrisolve un conflitto di porte congke-metadata-serversui nodi GKE. - Istanze Lustre esistenti: se ti connetti a un'istanza Managed Lustre esistente creata con il flag
gke-support-enabled, devi comunque includere--enable-legacy-lustre-portnei comandigcloud, indipendentemente dalla versione del cluster. Senza questo flag, il cluster GKE non riuscirà a montare l'istanza Lustre esistente. Per informazioni sul flaggke-support-enabled, consulta la descrizione dei flag facoltativi in Creare un'istanza.
- Versioni GKE precedenti: se il cluster GKE esegue una versione precedente alla
Puoi configurare i cluster nuovi ed esistenti in modo che utilizzino la porta predefinita 988 o la porta legacy 6988.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Cloud Managed Lustre e l'API Kubernetes Engine. Abilita le API
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
- Per limitazioni e requisiti, consulta Informazioni sul driver Google Cloud Managed Lustre CSI.
- Assicurati di abilitare il driver Managed Lustre CSI. È 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 Google Cloud ID progetto.LUSTRE_NETWORK: la rete Virtual Private Cloud condivisa in cui risiedono sia il cluster GKE sia l'istanza Managed Lustre.ZONE: la zona geografica del cluster GKE; ad esempio,us-central1-a.
Configura il driver Managed Lustre CSI
Questa sezione spiega come abilitare e disabilitare il driver Managed Lustre CSI.
Abilita il driver Managed Lustre CSI su un nuovo cluster GKE
Le sezioni seguenti descrivono come abilitare il driver Managed Lustre CSI su un nuovo cluster GKE.
Utilizza la porta predefinita 988
Per abilitare il driver Managed Lustre CSI durante la creazione di un nuovo cluster GKE che esegue la versione 1.33.2-gke.4780000 o successive, esegui il seguente comando:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver
Standard
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver
Utilizza la porta legacy 6988
Per abilitare il driver Managed Lustre CSI durante la creazione di un nuovo cluster GKE che esegue una versione precedente alla 1.33.2-gke.4780000, esegui il seguente comando:
Autopilot
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
Standard
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
Abilita il driver Managed Lustre CSI sui cluster GKE esistenti
Le sezioni seguenti descrivono come abilitare il driver Managed Lustre CSI sui cluster GKE esistenti.
Utilizza la porta predefinita 988
Per abilitare il driver Managed Lustre CSI su un cluster GKE esistente che esegue la versione 1.33.2-gke.4780000 o successive, esegui il seguente comando:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=ENABLED
Utilizza la porta legacy 6988
Per abilitare il driver Managed Lustre CSI su un cluster GKE esistente, potresti dover utilizzare la porta legacy 6988 aggiungendo il flag --enable-legacy-lustre-port. Questo flag è obbligatorio nei seguenti scenari:
- Se il cluster GKE esegue una versione precedente a
1.33.2-gke.4780000. Se intendi connettere questo cluster a un'istanza Managed Lustre esistente creata con il
gke-support-enabledflag.gcloud container clusters update ${CLUSTER_NAME} \ --location=${LOCATION} \ --enable-legacy-lustre-port
È necessario l'upgrade dei nodi sui cluster esistenti
L'abilitazione del driver Managed Lustre CSI sui cluster esistenti può attivare la ricreazione dei nodi per aggiornare i moduli kernel necessari per il client Managed Lustre. Per la disponibilità immediata, ti consigliamo di eseguire manualmente l'upgrade dei node pool.
I cluster GKE su un canale di rilascio vengono sottoposti ad upgrade in base al rollout pianificato, che può richiedere diverse settimane a seconda del periodo di manutenzione. Se utilizzi una versione GKE statica, devi eseguire manualmente l'upgrade dei node pool.
Fino al completamento dell'upgrade dei nodi, il pod del driver CSI potrebbe entrare in un loop di arresto anomalo sui nodi in attesa di aggiornamento. Se nei log dei pod del driver CSI viene visualizzato un errore Operation not permitted, significa che è necessario eseguire l'upgrade o la ricreazione dei nodi.
Dopo l'upgrade del pool di nodi, i nodi CPU potrebbero sembrare utilizzare un'immagine GPU nell'output della Google Cloud console o della CLI. Questo comportamento è previsto. L'immagine GPU viene riutilizzata sui nodi CPU per installare in modo sicuro i moduli kernel Managed Lustre. Non ti verrà addebitato alcun costo per l'utilizzo della GPU.
(Facoltativo) Crea un pool di nodi multi-NIC
Per utilizzare il networking ad alte prestazioni, devi creare un pool di nodi con un tipo di istanza che supporti più interfacce di rete. Il supporto multi-NIC è abilitato per impostazione predefinita sui cluster GKE che eseguono la versione 1.35.2-gke.1842000 o successive. Assicurati che le interfacce di rete secondarie si trovino nella stessa rete VPC dell'interfaccia principale.
Esegui questo comando:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--enable-gvnic \
--additional-node-network network=NETWORK_NAME,subnetwork=SECONDARY_SUBNET
Sostituisci quanto segue:
NODE_POOL_NAME: il nome del pool di nodi.CLUSTER_NAME: il nome del cluster.LOCATION: la regione o la zona del cluster.MACHINE_TYPE: il tipo di macchina per il pool di nodi, ad esempioa3-megagpu-8g, spesso utilizzato con multi-NIC per prestazioni elevate. Multi-NIC è supportato su qualsiasi tipo di macchina.NETWORK_NAME: il nome della rete VPC.SECONDARY_SUBNET: il nome della subnet secondaria.
Disabilita multi-NIC su Lustre
Sebbene il supporto multi-NIC sia consigliato per i workload ad alte prestazioni, potresti volerlo disabilitare in scenari specifici. Ad esempio, potresti non voler distribuire il traffico Lustre su tutte le interfacce hardware disponibili oppure potresti dover isolare i problemi di connettività a un singolo percorso di rete per la risoluzione dei problemi.
Nota: se disabiliti il supporto multi-NIC sui nodi in esecuzione, potresti dover ricreare o eseguire manualmente l'upgrade dei node pool affinché questa modifica abbia effetto.
Per un cluster
Per disabilitare il networking ad alte prestazioni per l'intero cluster, utilizza il flag --disable-multi-nic-lustre durante la creazione o l'aggiornamento del cluster. Ad esempio:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--disable-multi-nic-lustre
Sostituisci quanto segue:
CLUSTER_NAME: il nome del cluster.LOCATION: la regione o la zona del cluster.
Per un pool di nodi
Per disabilitare il networking ad alte prestazioni per un pool di nodi specifico, aggiorna il pool di nodi in modo da impostare l'etichetta lustre.csi.storage.gke.io/multi-nic su false:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--zone=LOCATION \
--node-labels=lustre.csi.storage.gke.io/multi-nic=false
Sostituisci quanto segue:
NODE_POOL_NAME: il nome del pool di nodi.CLUSTER_NAME: il nome del cluster.LOCATION: la zona del cluster.
Disabilita il driver Managed Lustre CSI
Puoi disabilitare il driver Managed Lustre CSI su un cluster GKE esistente utilizzando Google Cloud CLI.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
Dopo aver disabilitato il driver CSI, GKE ricrea automaticamente i nodi e disinstalla i moduli kernel Managed Lustre.
Accedi a un'istanza Managed Lustre esistente utilizzando il driver Managed Lustre CSI
Se hai già eseguito il provisioning di un'istanza Managed Lustre nella stessa rete del cluster GKE, puoi seguire queste istruzioni per eseguire il provisioning statico di un PersistentVolume che fa riferimento all'istanza.
Le sezioni seguenti descrivono la procedura tipica per accedere a un'istanza Managed Lustre esistente utilizzando il driver Managed Lustre CSI:
- Crea un PersistentVolume che fa riferimento all'istanza Managed Lustre.
- Usa un oggetto PersistentVolumeClaim per accedere al volume.
- Crea un workload che utilizza il volume.
Crea un PersistentVolume
Per individuare l'istanza Managed Lustre, esegui il seguente comando.
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}L'output dovrebbe essere simile al seguente. Prima di procedere al passaggio successivo, assicurati di annotare i campi Managed Lustre instance name (Nome istanza Managed Lustre), filesystem (File system) e mountPoint (Punto di montaggio).
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'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: 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: FILESYSTEMSostituisci quanto segue:
storageClassName: il nome della StorageClass. Il valore può essere una stringa vuota, ma deve soddisfare la specifica di PersistentVolumeClaim.volumeHandle: l'identificatore di questo volume.- PROJECT_ID: l' Google Cloud ID progetto.
- LOCATION: la località zonale dell'istanza Lustre. Devi specificare una zona supportata per il driver Managed Lustre CSI.
- INSTANCE_NAME: il nome dell'istanza Lustre.
ip: l'indirizzo IP dell'istanza Lustre. Lo ottieni dal campomountPointnell'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 Managed Lustre CSI.
Crea il PersistentVolume eseguendo questo comando:
kubectl apply -f lustre-pv.yaml
Usa PersistentVolumeClaim per accedere al volume
Puoi creare una PersistentVolumeClaim che fa riferimento alla StorageClass del driver Managed Lustre CSI.
Il seguente file manifest mostra un esempio di come creare un
PersistentVolumeClaim in ReadWriteMany
modalità di accesso ,
che fa riferimento alla StorageClass creata in precedenza.
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_SIZESostituisci STORAGE_SIZE con le dimensioni dello spazio di archiviazione, ad esempio,
9000Gi. Deve corrispondere alla specifica in PersistentVolume.Crea PersistentVolumeClaim eseguendo questo comando:
kubectl create -f lustre-pvc.yaml
Crea un workload che utilizza 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.
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-pvcEsegui il seguente comando per applicare il manifest al cluster:
kubectl apply -f my-pod.yamlIl pod attende che GKE esegua il provisioning di PersistentVolumeClaim prima di iniziare l'esecuzione. Il completamento di questa operazione potrebbe richiedere diversi minuti per essere completato.
Verifica che il pod sia in esecuzione:
kubectl get podsPotrebbero essere necessari alcuni minuti perché il pod raggiunga lo stato
Running.L'output è simile al seguente:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
Utilizza fsGroup con i volumi Managed Lustre
Puoi modificare la proprietà del gruppo della directory di livello root 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.
Libera spazio
Per evitare che ti vengano addebitati costi, elimina le risorse di archiviazione che hai creato in questa guida. Google Cloud
Elimina il pod e PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvcControlla lo stato di PersistentVolume. Dopo aver eliminato il pod e PersistentVolumeClaim, PersistentVolume dovrebbe segnalare lo stato "Released":
kubectl get pvL'output è simile al seguente:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28sRiutilizza 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 "Available", che indica che è pronto per essere associato a un nuovo PersistentVolumeClaim. Controlla lo stato di PersistentVolume:
kubectl get pvL'output è simile al seguente:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19mElimina PersistentVolume se non è più necessario. Se PersistentVolume non è più necessario, eliminalo:
kubectl delete pv lustre-pvL'eliminazione di PersistentVolume non rimuove l'istanza Managed Lustre sottostante.