Provisionnement des demandes de volume persistant sur le stockage de fichiers avec le service Lustre
Découvrez comment provisionner des demandes de volume persistant pour les clusters que vous avez créés à l'aide de Kubernetes Engine (OKE) en montant des systèmes de fichiers à partir du service File Storage avec Lustre.
Le service Oracle Cloud Infrastructure File Storage avec Lustre est un service de stockage entièrement géré conçu pour répondre aux exigences de la formation et de l'inférence en IA/ML, ainsi qu'aux besoins de calcul hautes performances. Vous utilisez le module d'extension CSI Lustre pour connecter des clusters à des systèmes de fichiers dans File Storage avec le service Lustre.
Vous pouvez utiliser le service File Storage avec Lustre pour provisionner des demandes de volume persistant (PVC) en créant manuellement un système de fichiers dans File Storage avec le service Lustre, puis en définissant et en créant un volume persistant (PV) soutenu par le nouveau système de fichiers, et enfin en définissant une nouvelle demande de volume persistant. Lorsque vous créez la demande de volume persistant, Kubernetes Engine la lie à la demande de volume persistant soutenue par le service File Storage with Lustre.
Le pilote CSI de Lustre est le logiciel global qui permet aux systèmes de fichiers Lustre d'être utilisés avec Kubernetes via l'interface de stockage de conteneur (CSI). Le plugin CSI Lustre est un composant spécifique au sein du pilote, responsable de l'interaction avec le serveur d'API Kubernetes et de la gestion du cycle de vie des volumes Lustre.
Tenez compte des éléments suivants :
- Le pilote CSI Lustre est pris en charge sur les clusters créés par Kubernetes Engine qui exécutent Kubernetes version 1.29 ou ultérieure.
- Le pilote CSI Lustre est pris en charge sur Oracle Linux 8 x86 et sur Ubuntu x86 22.04.
- Pour utiliser un système de fichiers Lustre avec un cluster créé par Kubernetes Engine, le package client Lustre doit être installé sur les noeuds de processus actif qui doivent monter le système de fichiers. Pour plus d'informations sur les clients Lustre, reportez-vous à la section Mounting and Accessing a Lustre File System.
Provisionnement d'une demande de volume persistant sur un système de fichiers existant
Pour créer une demande de volume persistant sur un système de fichiers existant dans le service File Storage avec Lustre (à l'aide de clés de cryptage gérées par Oracle pour crypter les données inactives), procédez comme suit :
- Créez un système de fichiers dans File Storage avec le service Lustre, en sélectionnant l'option de cryptage Crypter à l'aide de clés gérées par Oracle. See Creating a Lustre File System.
- Créez des règles de sécurité dans un groupe de sécurité réseau (recommandé) ou une liste de sécurité pour le système de fichiers Lustre et pour le sous-réseau de noeuds de processus actif du cluster.Les règles de sécurité à créer dépendent des emplacements réseau relatifs du système de fichiers Lustre et des noeuds de processus actif qui agissent en tant que client, selon les scénarios suivants :
Ces scénarios, les règles de sécurité à créer et l'emplacement où les créer, sont entièrement décrits dans la documentation du service File Storage with Lustre (reportez-vous à Règles de sécurité VCN requises).
- Créez un PV soutenu par le système de fichiers dans File Storage avec le service Lustre comme suit :
-
Créez un fichier manifeste pour définir une valeur PV et, dans la section
csi:
, définissez :driver
àlustre.csi.oraclecloud.com
volumeHandle
à<MGSAddress>@<LNetName>:/<MountName>
où :
<MGSAddress>
est l'adresse de service de gestion du système de fichiers dans File Storage avec le service Lustre.<LNetName>
est le nom réseau LNet du système de fichiers dans File Storage avec le service Lustre.<MountName>
est le nom de montage utilisé lors de la création du système de fichiers dans File Storage avec le service Lustre.
Par exemple :
10.0.2.6@tcp:/testlustrefs
fsType
àlustre
- (facultatif, mais recommandé)
volumeAttributes.setupLnet
à"true"
si vous souhaitez que le pilote CSI Lustre effectue la configuration lnet (réseau Lustre) avant de monter le système de fichiers. -
(Facultatif)
volumeAttributes.lustreSubnetCidr
au bloc CIDR du sous-réseau où se trouve la carte d'interface réseau virtuelle secondaire du noeud de processus actif, afin de s'assurer que le noeud de processus actif dispose d'une connectivité réseau au système de fichiers Lustre. Par exemple : 10.0.2.0/24.Remarque
N'indiquez pasvolumeAttributes.lustreSubnetCidr
si vous utilisez l'interface par défaut du noeud de processus actif (carte d'interface réseau virtuelle principale) pour vous connecter au système de fichiers Lustre. - (Facultatif)
volumeAttributes.lustrePostMountParameters
pour définir les paramètres Lustre. Par exemple :... volumeAttributes: lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" : 600}]'
Par exemple, le fichier manifeste suivant (nommé lustre-PV-example.yaml) définit un PV appelé
lustre-pv-example
soutenu par un système de fichiers 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"
- Créez le fichier PV à partir du fichier manifeste en saisissant la commande suivante :
kubectl apply -f <filename>
Par exemple :
kubectl apply -f lustre-pv-example.yaml
-
Vérifiez que le PV a bien été créé en saisissant la commande suivante :
kubectl get pv <pv-name>
Par exemple :
kubectl get pv lustre-pv-example
Exemple de sortie :
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv-example m31Ti RWX Retain Bound 56m
-
- Créez une demande de volume persistant provisionnée par la demande de modification que vous avez créée, comme suit :
- Créez un fichier manifeste pour définir la demande de volume persistant et définissez les éléments suivants :
storageClassName
à""
. Vous devez indiquer une valeur vide pourstorageClassName
, même si la classe de stockage n'est pas applicable dans le cas du provisionnement statique du stockage persistant. Si vous n'indiquez pas de valeur vide pourstorageClassName
, la classe de stockage par défaut (oci-bv
) est utilisée, ce qui entraîne une erreur.volumeName
indique le nom de la valeur de modification que vous avez créée (par exemple,lustre-pv-example
).
Par exemple, le fichier manifeste suivant (nommé lustre-PVC-example.yaml) définit une PVC nommée
lustre-pvc-example
qui sera liée à une PV nomméelustre-pv-example
:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-pvc-example spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: lustre-pv-example resources: requests: storage: 31Ti
Notez que l'élément
requests: storage:
doit être présent dans le fichier manifeste de la demande de volume persistant et que sa valeur doit correspondre à la valeur spécifiée pour l'élémentcapacity: storage:
dans le fichier manifeste de la demande de volume persistant. En dehors de cela, la valeur de l'élémentrequests: storage:
est ignorée. - Créez la demande de volume persistant à partir du fichier manifeste en saisissant ce qui suit :
kubectl apply -f <filename>
Par exemple :kubectl apply -f lustre-pvc-example.yaml
-
Vérifiez que la PVC a été créée et liée à la PV en saisissant ce qui suit :
kubectl get pvc <pvc-name>
Par exemple :
kubectl get pvc lustre-pvc-example
Exemple de sortie :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE lustre-pvc-example Bound lustre-pv-example 31Ti RWX 57m
Le PVC est lié au PV soutenu par le système de fichiers File Storage avec service Lustre. Les données sont cryptées lorsqu'elles sont inactives à l'aide de clés de cryptage gérées par Oracle.
- Créez un fichier manifeste pour définir la demande de volume persistant et définissez les éléments suivants :
- Utilisez la nouvelle demande de volume persistant lors de la création d'autres objets, tels que des déploiements. Par exemple :
- Créez un manifeste nommé lustre-app-example-deployment.yaml pour définir un déploiement nommé
lustre-app-example-deployment
qui utilise la demande de volume persistantlustre-pvc-example
, comme suit :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
- Créez le déploiement à partir du fichier manifeste en saisissant la commande suivante :
kubectl apply -f lustre-app-example-deployment.yaml
- Vérifiez que les pods de déploiement ont été créés et sont en cours d'exécution en saisissant ce qui suit :
kubectl get pods
Exemple de sortie :
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
- Créez un manifeste nommé lustre-app-example-deployment.yaml pour définir un déploiement nommé
Provisionnement d'une demande de volume persistant sur un système de fichiers existant avec des options de montage
Vous pouvez optimiser les performances et contrôler l'accès à un système de fichiers Lustre existant en spécifiant des options de montage pour le PV. La spécification des options de montage vous permet d'affiner la façon dont les pods interagissent avec le système de fichiers.
Pour inclure les options de montage :
- Commencez par suivre les instructions de la section Provisionnement d'une demande de volume persistant sur un système de fichiers existant.
- Dans le manifeste PV décrit à la section Provisionnement d'une demande de volume persistant sur un système de fichiers existant, ajoutez le champ
spec.mountOptions
, qui vous permet de spécifier comment la demande de volume persistant doit être montée par les pods.Par exemple, dans le fichier manifeste lustre-pv-example.yaml présenté à la section Provisionnement d'une demande de volume persistant sur un système de fichiers existant, vous pouvez inclure le champ
mountOptions
comme suit :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"
Dans cet exemple, le champ
mountOptions
est défini surro
, ce qui indique que les pods doivent disposer d'un accès en lecture seule au système de fichiers. Pour plus d'informations sur les options de montage PV, reportez-vous à Volumes persistants dans la documentation Kubernetes.
Cryptage des données inactives sur un système de fichiers existant
Le service File Storage avec Lustre crypte toujours les données inactives à l'aide de clés de cryptage gérées par Oracle par défaut. Toutefois, vous avez la possibilité d'indiquer le cryptage au repos à l'aide de vos propres clés de cryptage maître que vous gérez vous-même dans le service Vault.
Pour plus d'informations sur la création de File Storage avec des systèmes de fichiers Lustre qui utilisent des clés de cryptage gérées par Oracle ou vos propres clés de cryptage maître que vous gérez vous-même, reportez-vous à Mise à jour du cryptage de système de fichiers.