Aprovisionamiento de PVC en File Storage con Lustre Service

Descubra cómo aprovisionar reclamaciones de volúmenes persistentes para clusters que ha creado con Kubernetes Engine (OKE) mediante el montaje de sistemas de archivos desde File Storage con el servicio Lustre.

El servicio Oracle Cloud Infrastructure File Storage with Lustre es un servicio de almacenamiento totalmente gestionado diseñado para satisfacer las demandas de formación e inferencia de IA/AA y necesidades informáticas de alto rendimiento. Utilice el plugin Lustre CSI para conectar clusters a sistemas de archivos en File Storage con el servicio Lustre.

Puede utilizar el servicio File Storage with Lustre para aprovisionar reclamaciones de volúmenes persistentes (PVC) mediante la creación manual de un sistema de archivos en el servicio File Storage with Lustre, la definición y creación de un volumen persistente (PV) respaldado por el nuevo sistema de archivos y, por último, la definición de una nueva PVC. Al crear el PVC, el motor de Kubernetes enlaza el PVC al PV respaldado por el servicio File Storage con Lustre.

El controlador CSI de Lustre es el software general que permite que los sistemas de archivos de Lustre se utilicen con Kubernetes a través de la interfaz de almacenamiento de contenedores (CSI). El plugin CSI de Lustre es un componente específico dentro del controlador, responsable de interactuar con el servidor API de Kubernetes y gestionar el ciclo de vida de los volúmenes de Lustre.

Tenga en cuenta lo siguiente:

  • El controlador CSI de Lustre está soportado en clusters creados por Kubernetes Engine que ejecutan la versión 1.29 o posterior de Kubernetes.
  • El controlador CSI de Lustre está soportado en Oracle Linux 8 x86 y en Ubuntu x86 22.04.
  • Para utilizar un sistema de archivos Lustre con un cluster creado por Kubernetes Engine, el paquete de cliente Lustre debe estar instalado en los nodos de trabajador que tienen que montar el sistema de archivos. Para obtener más información sobre los clientes de Lustre, consulte Mounting and Accessing a Lustre File System.

Aprovisionamiento de una PVC en un sistema de archivos existente

Para crear una PVC en un sistema de archivos existente en el servicio File Storage with Lustre (mediante claves de cifrado gestionadas por Oracle para cifrar datos estáticos):

  1. Cree un sistema de archivos en el servicio File Storage con Lustre, seleccionando la opción de cifrado Cifrar mediante claves gestionadas por Oracle. Consulte Creating a Lustre File System.
  2. Cree reglas de seguridad en un grupo de seguridad de red (recomendado) o en una lista de seguridad para el sistema de archivos Lustre y para la subred de nodos de trabajador del cluster.
    Las reglas de seguridad para crear dependen de las ubicaciones de red relativas del sistema de archivos Lustre y de los nodos de trabajador que actúan como cliente, según los siguientes escenarios:

    Estos escenarios, las reglas de seguridad que se van a crear y dónde crearlas, se describen por completo en la documentación del servicio File Storage with Lustre (consulte Reglas de seguridad de la VCN necesarias).

  3. Cree un PV respaldado por el sistema de archivos en File Storage con el servicio Lustre de la siguiente manera:
    1. Cree un archivo de manifiesto para definir un PV y, en la sección csi:, defina:

      • De driver a lustre.csi.oraclecloud.com
      • De volumeHandle a <MGSAddress>@<LNetName>:/<MountName>

        donde:

        • <MGSAddress> es la dirección del servicio de gestión para el sistema de archivos en File Storage con el servicio Lustre
        • <LNetName> es el nombre de red LNet para el sistema de archivos en el servicio File Storage con Lustre.
        • <MountName> es el nombre de montaje utilizado al crear el sistema de archivos en File Storage con el servicio Lustre.

        Por ejemplo: 10.0.2.6@tcp:/testlustrefs

      • De fsType a lustre
      • (Opcional, pero recomendado) De volumeAttributes.setupLnet a "true" si desea que el controlador CSI de Lustre realice la configuración de lnet (red de Lustre) antes de montar el sistema de archivos.
      • (Opcional) volumeAttributes.lustreSubnetCidr al bloque CIDR de la subred donde se encuentra la VNIC secundaria del nodo de trabajador, para garantizar que el nodo de trabajador tenga conectividad de red con el sistema de archivos Lustre. Por ejemplo, 10.0.2.0/24.

        Nota

        No especifique volumeAttributes.lustreSubnetCidr si utiliza la interfaz por defecto del nodo de trabajador (la VNIC principal) para conectarse al sistema de archivos de Lustre.
      • (Opcional) volumeAttributes.lustrePostMountParameters para definir los parámetros de Lustre. Por ejemplo:
        ...
            volumeAttributes:
              lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" :
            600}]'

      Por ejemplo, el siguiente archivo de manifiesto (lustre-PV-example.yaml) define un PV denominado lustre-pv-example respaldado por un sistema de archivos 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. Cree el PV desde el archivo de manifiesto introduciendo:
      kubectl apply -f <filename>

      Por ejemplo:

      kubectl apply -f lustre-pv-example.yaml
    3. Verifique que el PV se ha creado correctamente introduciendo:

      kubectl get pv <pv-name>

      Por ejemplo:

      kubectl get pv lustre-pv-example

      Salida de ejemplo:

      NAME                   CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                           STORAGECLASS   REASON   AGE
      lustre-pv-example      m31Ti      RWX            Retain           Bound                                                            56m
      
  4. Cree una PVC aprovisionada por el PV que ha creado, de la siguiente manera:
    1. Cree un archivo de manifiesto para definir la PVC y defina:
      • storageClassName a "" Tenga en cuenta que debe especificar un valor vacío para storageClassName, aunque la clase de almacenamiento no sea aplicable en el caso del aprovisionamiento estático del almacenamiento persistente. Si no especifica un valor vacío para storageClassName, se utiliza la clase de almacenamiento por defecto (oci-bv), lo que provoca un error.
      • volumeName al nombre del PV que ha creado (por ejemplo, lustre-pv-example)

      Por ejemplo, el siguiente archivo de manifiesto (denominado lustre-PVC-example.yaml) define una PVC denominada lustre-pvc-example que se enlazará a un PV denominado lustre-pv-example:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: lustre-pvc-example
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: ""
        volumeName: lustre-pv-example
        resources:
          requests:
            storage:  31Ti

      Tenga en cuenta que el elemento requests: storage: debe estar presente en el archivo de manifiesto de PVC y su valor debe coincidir con el valor especificado para el elemento capacity: storage: en el archivo de manifiesto de PV. Aparte de eso, se ignora el valor del elemento requests: storage:.

    2. Cree la PVC a partir del archivo de manifiesto introduciendo:
      kubectl apply -f <filename>
      Por ejemplo:
      kubectl apply -f lustre-pvc-example.yaml
    3. Verifique que la PVC se ha creado y se ha enlazado al PV correctamente introduciendo:

      kubectl get pvc <pvc-name>

      Por ejemplo:

      kubectl get pvc lustre-pvc-example

      Salida de ejemplo:

      NAME                    STATUS   VOLUME                 CAPACITY   ACCESS MODES   STORAGECLASS   AGE
      lustre-pvc-example      Bound    lustre-pv-example       31Ti      RWX                           57m

    La PVC está enlazada al PV respaldado por el sistema de archivos del servicio File Storage con Lustre. Los datos se cifran estáticos mediante claves de cifrado gestionadas por Oracle.

  5. Utilice la nueva PVC al crear otros objetos, como despliegues. Por ejemplo:
    1. Cree un manifiesto denominado lustre-app-example-deployment.yaml para definir un despliegue denominado lustre-app-example-deployment que utilice la PVC lustre-pvc-example, de la siguiente forma:
      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. Cree el despliegue a partir del archivo de manifiesto introduciendo:
      kubectl apply -f lustre-app-example-deployment.yaml
    3. Verifique que los pods de despliegue se han creado correctamente y se están ejecutando introduciendo:
      kubectl get pods

      Salida de ejemplo:

      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

Aprovisionamiento de una PVC en un sistema de archivos existente con opciones de montaje

Puede optimizar el rendimiento y controlar el acceso a un sistema de archivos Lustre existente especificando opciones de montaje para el PV. La especificación de opciones de montaje permite ajustar la forma en que los pods interactúan con el sistema de archivos.

Para incluir opciones de montaje:

  1. Para comenzar, siga las instrucciones de Provisioning a PVC on an Existing File System.
  2. En el manifiesto PV que se describe en Provisioning a PVC on an Existing File System, agregue el campo spec.mountOptions, que le permite especificar cómo deben montar el PV los pods.

    Por ejemplo, en el archivo de manifiesto lustre-pv-example.yaml que se muestra en Provisioning a PVC on an Existing File System, puede incluir el campo mountOptions de la siguiente manera:

    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"

    En este ejemplo, el campo mountOptions se define en ro, lo que indica que los pods deben tener acceso de solo lectura al sistema de archivos. Para obtener más información sobre las opciones de montaje de PV, consulte Volúmenes persistentes en la documentación de Kubernetes.

Cifrado de datos estáticos en un sistema de archivos existente

El servicio File Storage con Lustre siempre cifra los datos estáticos mediante claves de cifrado gestionadas por Oracle por defecto. Sin embargo, tiene la opción de especificar el cifrado estático mediante sus propias claves de cifrado maestras que se gestionan en el servicio Vault.

Para obtener más información sobre la creación de File Storage con sistemas de archivos Lustre que utilizan claves de cifrado gestionadas por Oracle o sus propias claves de cifrado maestras gestionadas por usted mismo, consulte Actualización del cifrado del sistema de archivos.