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 :

  1. 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.
  2. 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).

  3. Créez un PV soutenu par le système de fichiers dans File Storage avec le service Lustre comme suit :
    1. 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 pas volumeAttributes.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"
    2. 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
    3. 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
      
  4. Créez une demande de volume persistant provisionnée par la demande de modification que vous avez créée, comme suit :
    1. 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 pour storageClassName, 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 pour storageClassName, 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ée lustre-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ément capacity: storage: dans le fichier manifeste de la demande de volume persistant. En dehors de cela, la valeur de l'élément requests: storage: est ignorée.

    2. 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
    3. 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.

  5. Utilisez la nouvelle demande de volume persistant lors de la création d'autres objets, tels que des déploiements. Par exemple :
    1. 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 persistant lustre-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
    2. Créez le déploiement à partir du fichier manifeste en saisissant la commande suivante :
      kubectl apply -f lustre-app-example-deployment.yaml
    3. 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

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 :

  1. Commencez par suivre les instructions de la section Provisionnement d'une demande de volume persistant sur un système de fichiers existant.
  2. 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 sur ro, 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.