Provisioning dei PVC nello storage di file con Lustre Service
Scopri come eseguire il provisioning delle richieste di volume persistenti per i cluster creati utilizzando Kubernetes Engine (OKE) eseguendo il MOUNT dei file system dallo storage di file con il servizio Lustre.
Il servizio Oracle Cloud Infrastructure File Storage with Lustre è un servizio di storage completamente gestito progettato per soddisfare le esigenze di formazione e inferenza AI/ML e di elaborazione ad alte prestazioni. Il plugin Lustre CSI consente di connettere i cluster ai file system nello storage di file con il servizio Lustre.
Puoi utilizzare il servizio Storage di file con Lustre per eseguire il provisioning delle richieste di volume persistenti (PVC) creando manualmente un file system nello storage di file con il servizio Lustre, quindi definendo e creando un volume persistente (PV) supportato dal nuovo file system e infine definendo un nuovo PVC. Quando crei il PVC, Kubernetes Engine lega il PVC al PV supportato dallo storage di file con il servizio Lustre.
Il driver Lustre CSI è il software complessivo che consente di utilizzare i file system Lustre con Kubernetes tramite l'interfaccia CSI (Container Storage Interface). Il plugin Lustre CSI è un componente specifico all'interno del driver, responsabile dell'interazione con il server API Kubernetes e della gestione del ciclo di vita dei volumi Lustre.
Tenere presente quanto riportato di seguito.
- Il driver CSI Lustre è supportato nei cluster creati da Kubernetes Engine che eseguono Kubernetes versione 1.29 o successiva.
- Il driver Lustre CSI è supportato su Oracle Linux 8 x86 e su Ubuntu x86 22.04.
- Per utilizzare un file system Lustre con un cluster creato da Kubernetes Engine, il pacchetto client Lustre deve essere installato sui nodi di lavoro che devono eseguire il MOUNT del file system. Per maggiori informazioni sui client Lustre, vedere Mounting and Accessing a Lustre File System.
Provisioning di un PVC su un file system esistente
Per creare un PVC su un file system esistente nello storage di file con il servizio Lustre (utilizzando chiavi di cifratura gestite da Oracle per cifrare i dati in archivio):
- Creare un file system nello storage di file con il servizio Lustre, selezionando l'opzione di cifratura Encrypt using Oracle-managed keys. Vedere Creating a Lustre File System.
- Creare regole di sicurezza in un gruppo di sicurezza di rete (consigliato) o in una lista di sicurezza sia per il file system Lustre che per la subnet dei nodi di lavoro del cluster.Le regole di sicurezza da creare dipendono dalle posizioni di rete relative del file system Lustre e dai nodi di lavoro che fungono da client, in base agli scenari riportati di seguito.
Questi scenari, le regole di sicurezza da creare e la posizione in cui crearli, sono descritti completamente nella documentazione del servizio Storage di file con Lustre (vedere Regole di sicurezza VCN obbligatorie).
- Creare un PV supportato dal file system nello storage di file con il servizio Lustre come indicato di seguito.
-
Creare un file manifesto per definire un PV e, nella sezione
csi:
, impostare:- Da
driver
alustre.csi.oraclecloud.com
- Da
volumeHandle
a<MGSAddress>@<LNetName>:/<MountName>
Dove:
<MGSAddress>
è l'indirizzo del servizio di gestione per il file system nello storage di file con il servizio Lustre<LNetName>
è il nome di rete LNet per il file system nello storage di file con il servizio Lustre.<MountName>
è il nome di accesso utilizzato durante la creazione del file system nello storage di file con il servizio Lustre.
Ad esempio:
10.0.2.6@tcp:/testlustrefs
- Da
fsType
alustre
- (facoltativo, ma consigliato) da
volumeAttributes.setupLnet
a"true"
se si desidera che il driver Lustre CSI esegua l'impostazione lnet (Lustre Network) prima di eseguire il MOUNT del file system. -
(facoltativo)
volumeAttributes.lustreSubnetCidr
al blocco CIDR della subnet in cui si trova la VNIC secondaria del nodo di lavoro, per garantire che il nodo di lavoro disponga della connettività di rete al file system Lustre. ad esempio 10.0.2.0/24.Nota
Non specificarevolumeAttributes.lustreSubnetCidr
se si utilizza l'interfaccia predefinita del nodo di lavoro (la VNIC primaria) per connettersi al file system Lustre. - (facoltativo)
volumeAttributes.lustrePostMountParameters
per impostare i parametri di Lustre. Ad esempio:... volumeAttributes: lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" : 600}]'
Ad esempio, il seguente file manifesto (denominato lustre-PV-example.yaml) definisce un PV denominato
lustre-pv-example
supportato da un file system Lustre:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv-example spec: capacity: storage: 31Ti volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: lustre.csi.oraclecloud.com volumeHandle: "10.0.2.6@tcp:/testlustrefs" fsType: lustre volumeAttributes: setupLnet: "true"
- Da
- Creare il PV dal file manifesto immettendo:
kubectl apply -f <filename>
Ad esempio:
kubectl apply -f lustre-pv-example.yaml
-
Verificare che il PV sia stato creato correttamente immettendo:
kubectl get pv <pv-name>
Ad esempio:
kubectl get pv lustre-pv-example
Output di esempio:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv-example m31Ti RWX Retain Bound 56m
-
- Creare un PVC fornito dal PV creato, come segue:
- Creare un file manifesto per definire il PVC e impostare:
- Da
storageClassName
a""
Si noti che è necessario specificare un valore vuoto perstorageClassName
, anche se la classe di memorizzazione non è applicabile in caso di provisioning statico dello storage persistente. Se non si specifica un valore vuoto perstorageClassName
, viene utilizzata la classe di memorizzazione predefinita (oci-bv
), che causa un errore. volumeName
al nome del PV creato (ad esempio,lustre-pv-example
)
Ad esempio, il seguente file manifesto (denominato lustre-PVC-example.yaml) definisce un PVC denominato
lustre-pvc-example
che verrà associato a un PV denominatolustre-pv-example
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-pvc-example spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: lustre-pv-example resources: requests: storage: 31Ti
Si noti che l'elemento
requests: storage:
deve essere presente nel file manifesto del PVC e che il relativo valore deve corrispondere al valore specificato per l'elementocapacity: storage:
nel file manifesto del PV. A parte questo, il valore dell'elementorequests: storage:
viene ignorato. - Da
- Creare il PVC dal file manifesto inserendo:
kubectl apply -f <filename>
Ad esempio:kubectl apply -f lustre-pvc-example.yaml
-
Verificare che il PVC sia stato creato e associato al PV inserendo:
kubectl get pvc <pvc-name>
Ad esempio:
kubectl get pvc lustre-pvc-example
Output di esempio:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE lustre-pvc-example Bound lustre-pv-example 31Ti RWX 57m
Il PVC è legato al PV supportato dallo storage di file con il file system di servizio Lustre. I dati vengono cifrati in archivio utilizzando le chiavi di cifratura gestite da Oracle.
- Creare un file manifesto per definire il PVC e impostare:
- Utilizzare il nuovo PVC quando si creano altri oggetti, ad esempio le distribuzioni. Ad esempio:
- Creare un file manifesto denominato lustre-app-example-deployment.yaml per definire una distribuzione denominata
lustre-app-example-deployment
che utilizza il PVClustre-pvc-example
, come indicato di seguito.apiVersion: apps/v1 kind: Deployment metadata: name: lustre-app-example-deployment spec: selector: matchLabels: app: lustre-app-example replicas: 2 template: metadata: labels: app: lustre-app-example spec: containers: - args: - -c - while true; do echo $(date -u) >> /lustre/data/out.txt; sleep 60; done command: - /bin/sh image: busybox:latest imagePullPolicy: Always name: lustre-app-example volumeMounts: - mountPath: /lustre/data name: lustre-volume restartPolicy: Always volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvc-example
- Creare la distribuzione dal file manifest immettendo:
kubectl apply -f lustre-app-example-deployment.yaml
- Verificare che i pod di distribuzione siano stati creati correttamente e siano in esecuzione immettendo:
kubectl get pods
Output di esempio:
NAME READY STATUS RESTARTS AGE lustre-app-example-deployment-7767fdff86-nd75n 1/1 Running 0 8h lustre-app-example-deployment-7767fdff86-wmxlh 1/1 Running 0 8h
- Creare un file manifesto denominato lustre-app-example-deployment.yaml per definire una distribuzione denominata
Provisioning di un PVC su un file system esistente con opzioni di attivazione
È possibile ottimizzare le prestazioni e controllare l'accesso a un file system Lustre esistente specificando le opzioni di montaggio per il PV. La specifica delle opzioni di attivazione consente di ottimizzare le modalità di interazione dei pod con il file system.
Per includere le opzioni di attivazione, procedere come segue.
- Seguire le istruzioni in Provisioning a PVC on an Existing File System.
- Nel file manifesto PV descritto in Provisioning di un PVC su un file system esistente, aggiungere il campo
spec.mountOptions
, che consente di specificare il modo in cui il PV deve essere montato dai pod.Ad esempio, nel file manifesto lustre-pv-example.yaml mostrato in Provisioning di un PVC su un file system esistente, è possibile includere il campo
mountOptions
come indicato di seguito.apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv-example spec: capacity: storage: 31Ti volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain mountOptions: - ro csi: driver: lustre.csi.oraclecloud.com volumeHandle: "10.0.2.6@tcp:/testlustrefs" fsType: lustre volumeAttributes: setupLnet: "true"
In questo esempio, il campo
mountOptions
viene impostato suro
, a indicare che i pod devono disporre dell'accesso in sola lettura al file system. Per ulteriori informazioni sulle opzioni di montaggio PV, vedere Volumi persistenti nella documentazione di Kubernetes.
Cifratura dei dati in archivio su un file system esistente
Lo storage di file con il servizio Lustre esegue sempre la cifratura dei dati in archivio, utilizzando le chiavi di cifratura gestite da Oracle per impostazione predefinita. Tuttavia, hai la possibilità di specificare la cifratura in archivio utilizzando le tue chiavi di cifratura master che gestisci tu stesso nel servizio Vault.
Per ulteriori informazioni sulla creazione dello storage di file con file system Lustre che utilizzano chiavi di cifratura gestite da Oracle o le proprie chiavi di cifratura master gestite personalmente, vedere Aggiornamento della cifratura del file system.