Provisionnement de PVC sur le stockage de fichiers avec le service Lustre
Découvrez comment provisionner des revendications de volume persistant pour les grappes que vous avez créées à l'aide de Kubernetes Engine (OKE) en montant des systèmes de fichiers à partir du service File Storage avec Lustre.
Le service de stockage de fichiers avec Lustre d'Oracle Cloud Infrastructure est un service de stockage entièrement géré conçu pour répondre aux exigences de formation et d'inférence en IA/apprentissage automatique, ainsi qu'aux besoins de calcul de haute performance. Vous utilisez le plugiciel CSI Lustre pour connecter des grappes aux systèmes de fichiers du service de stockage de fichiers avec Lustre.
Vous pouvez utiliser le service de stockage de fichiers avec Lustre pour provisionner des revendications de volume persistant en créant manuellement un système de fichiers dans le service de stockage de fichiers avec Lustre, en définissant et en créant un volume persistant soutenu par le nouveau système de fichiers, puis en définissant une nouvelle revendication de volume persistant. Lorsque vous créez la revendication de volume persistant, le moteur Kubernetes la lie à la revendication de volume persistant soutenue par le service de stockage de fichiers avec Lustre.
Le pilote CSI Lustre est le logiciel global qui permet d'utiliser les systèmes de fichiers Lustre avec Kubernetes au moyen de l'interface de stockage de conteneurs (CSI). Le plugin Lustre CSI 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.
Notez ce qui suit :
- Le pilote CSI Lustre est pris en charge sur les grappes créées 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 une grappe créée par Kubernetes Engine, l'ensemble client Lustre doit être installé sur les noeuds de travail qui doivent monter le système de fichiers. Pour plus d'informations sur les clients Lustre, voir Montage et accès à un système de fichiers Lustre File System.
Provisionnement d'une revendication de volume persistant sur un système de fichiers existant
Pour créer une revendication de volume persistant sur un système de fichiers existant dans le service de stockage de fichiers avec Lustre (à l'aide de clés de chiffrement gérées par Oracle pour chiffrer les données au repos) :
- Créez un système de fichiers dans le service File Storage avec Lustre, en sélectionnant l'option de chiffrement Chiffrer à l'aide des clés gérées par Oracle. Voir Création d'un système de fichiers Lustre File System.
- Créez des règles de sécurité dans un groupe de sécurité de 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 travail de la grappe.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 travail qui agissent en tant que client, selon les scénarios suivants :
Ces scénarios, les règles de sécurité à créer et l'endroit où les créer sont décrits en détail dans la documentation du service File Storage with Lustre (voir Règles de sécurité de réseau VCN requises).
- Créez une valeur actualisée soutenue par le système de fichiers dans le service de stockage de fichiers avec Lustre comme suit :
-
Créez un fichier manifeste pour définir une valeur actualisée et, dans la section
csi:
, définissez les éléments suivants :driver
àlustre.csi.oraclecloud.com
volumeHandle
à<MGSAddress>@<LNetName>:/<MountName>
où :
<MGSAddress>
est l'adresse du service de gestion pour le système de fichiers du service de stockage de fichiers avec Lustre<LNetName>
est le nom de réseau LNet pour le système de fichiers dans le service de stockage de fichiers avec Lustre.<MountName>
est le nom de montage utilisé lors de la création du système de fichiers dans le service de stockage de fichiers avec Lustre.
Par exemple :
10.0.2.6@tcp:/testlustrefs
fsType
àlustre
- (facultatif, mais recommandé)
volumeAttributes.setupLnet
à"true"
si vous voulez que le pilote CSI Lustre effectue la configuration lnet (Lustre Network) avant de monter le système de fichiers. -
(Facultatif)
volumeAttributes.lustreSubnetCidr
pour le bloc CIDR du sous-réseau où se trouve la carte VNIC secondaire du noeud de travail, afin de s'assurer que le noeud de travail a une connectivité réseau au système de fichiers Lustre. Par exemple : 10.0.2.0/24.Note
Ne spécifiez pasvolumeAttributes.lustreSubnetCidr
si vous utilisez l'interface par défaut du noeud de travail (la carte VNIC 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 PV à partir du fichier manifeste en entrant :
kubectl apply -f <filename>
Par exemple :
kubectl apply -f lustre-pv-example.yaml
-
Vérifiez que le PV a été créé avec succès en entrant :
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 revendication de volume persistant provisionnée par la revendication de volume persistant que vous avez créée, comme suit :
- Créez un fichier manifeste pour définir la revendication de volume persistant et définissez les éléments suivants :
storageClassName
à""
Notez que vous devez spécifier 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 ne spécifiez pas de valeur vide pourstorageClassName
, la classe de stockage par défaut (oci-bv
) est utilisée, ce qui entraîne une erreur.volumeName
au nom de la valeur actualisée que vous avez créée (par exemple,lustre-pv-example
)
Par exemple, le fichier manifeste suivant (nommé lustre-PVC-example.yaml) définit une revendication de volume persistant nommée
lustre-pvc-example
qui sera liée à une revendication de volume persistant 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 revendication 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 revendication de volume persistant. En dehors de cela, la valeur de l'élémentrequests: storage:
est ignorée. - Créez la revendication de volume persistant à partir du fichier manifeste en entrant :
kubectl apply -f <filename>
Par exemple :kubectl apply -f lustre-pvc-example.yaml
-
Vérifiez que la PVC a bien été créée et liée au PV en entrant :
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
La revendication de volume persistant est liée à la valeur actualisée soutenue par le stockage de fichiers avec le système de fichiers du service Lustre. Les données sont chiffrées au repos à l'aide de clés de chiffrement gérées par Oracle.
- Créez un fichier manifeste pour définir la revendication de volume persistant et définissez les éléments suivants :
- Utilisez la nouvelle revendication 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 revendication 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 entrant :
kubectl apply -f lustre-app-example-deployment.yaml
- Vérifiez que les pods de déploiement ont été créés et s'exécutent en entrant :
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 revendication 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 les options de montage pour le PV. La spécification des options de montage vous permet d'affiner l'interaction des pods avec le système de fichiers.
Pour inclure des options de montage :
- Commencez par suivre les instructions sous Provisionnement d'une revendication de volume persistant sur un système de fichiers existant.
- Dans le manifeste PV décrit sous Provisionnement d'une revendication de volume persistant sur un système de fichiers existant, ajoutez le champ
spec.mountOptions
, qui vous permet de spécifier comment la revendication de volume persistant doit être montée par des pods.Par exemple, dans le fichier manifeste lustre-pv-example.yaml affiché sous Provisionnement d'une revendication 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 réglé àro
, ce qui indique que les pods doivent avoir un accès en lecture seule au système de fichiers. Pour plus d'informations sur les options de montage PV, voir Volumes persistants dans la documentation sur Kubernetes.
Chiffrement des données au repos dans un système de fichiers existant
Le service File Storage avec Lustre chiffre toujours les données au repos à l'aide de clés de chiffrement gérées par Oracle par défaut. Toutefois, vous avez la possibilité de spécifier le chiffrement au repos à l'aide de vos propres clés de chiffrement principales que vous gérez vous-même dans le service de chambre forte.
Pour plus d'informations sur la création du service de stockage de fichiers avec des systèmes de fichiers Lustre qui utilisent des clés de chiffrement gérées par Oracle ou vos propres clés de chiffrement principales que vous gérez vous-même, voir Mise à jour du chiffrement du système de fichiers.