Provisionando PVCs no Armazenamento de Arquivos com o Lustre Service

Descubra como provisionar reivindicações de volume persistentes para clusters que você criou usando o Kubernetes Engine (OKE) montando sistemas de arquivos do File Storage com o serviço Lustre.

O serviço Oracle Cloud Infrastructure File Storage with Lustre é um serviço de armazenamento totalmente gerenciado projetado para atender às demandas de treinamento e inferência de IA/ML e necessidades de computação de alto desempenho. Você usa o plug-in Lustre CSI para conectar clusters a sistemas de arquivos no File Storage com o serviço Lustre.

Você pode usar o serviço File Storage com Lustre para provisionar solicitações de volume persistentes (PVCs) de duas maneiras:

  • Definindo e criando uma nova classe de armazenamento e, em seguida, definindo e criando uma PVC fazendo referência a essa classe de armazenamento. Quando você cria a PVC, o plugin Lustre CSI cria dinamicamente um novo sistema de arquivos Lustre e um novo volume persistente apoiado pelo novo sistema de arquivos. Consulte Provisionando uma PVC em um Novo Lustre File System Usando o Plug-in de Volume CSI.
  • Criando manualmente um sistema de arquivos no serviço File Storage com Lustre, definindo e criando um volume persistente (PV) apoiado pelo novo sistema de arquivos e, finalmente, definindo uma nova PVC. Quando você cria a PVC, o Kubernetes Engine vincula a PVC ao PV suportado pelo serviço File Storage with Lustre. Consulte Provisionando uma PVC em um Lustre File System Existente

O driver Lustre CSI é o software geral que permite que os sistemas de arquivos Lustre sejam usados com o Kubernetes por meio da Container Storage Interface (CSI). O plug-in Lustre CSI é um componente específico dentro do driver, responsável por interagir com o servidor de API do Kubernetes e gerenciar o ciclo de vida dos volumes Lustre.

Observe o seguinte:

  • Ao usar o plugin Lustre CSI para criar dinamicamente um novo sistema de arquivos, não atualize ou exclua manualmente o volume persistente ou objetos do sistema de arquivos Lustre que o plugin CSI cria.
  • Todos os sistemas de arquivos Lustre criados dinamicamente pelo plug-in de volume CSI recebem nomes começando com csi-lustre- .
  • Todos os sistemas de arquivos Lustre criados dinamicamente pelo plug-in de volume CSI aparecem na Console. Entretanto, não use a Console (ou a CLI ou a API do Oracle Cloud Infrastructure) para modificar esses recursos criados dinamicamente. As alterações feitas nos recursos do Oracle Cloud Infrastructure criados dinamicamente pelo plug-in de volume do CSI não são reconciliadas com objetos do Kubernetes.
  • Alguns recursos avançados, como expansão de volume, snapshot e clone, não estão disponíveis no momento para sistemas de arquivos Lustre provisionados dinamicamente.
  • Se você excluir uma PVC vinculada a um PV respaldado por um sistema de arquivos criado pelo plug-in de volume CSI e a política de recuperação estiver definida como Excluir, o PV e o sistema de arquivos Lustre serão excluídos. Se a política de recuperação for Reter, o PV não será excluído.
  • O uso do driver Lustre CSI para provisionar uma PVC em um sistema de arquivos Lustre criado dinamicamente é suportado em clusters criados pelo Kubernetes Engine que estejam executando o Kubernetes versão 1.32 ou posterior. O uso do driver Lustre CSI para provisionar uma PVC em um sistema de arquivos Lustre existente é suportado em clusters criados pelo Kubernetes Engine que estejam executando o Kubernetes versão 1.29 ou posterior.
  • O driver Lustre CSI é suportado no Oracle Linux 8 x86 e no Ubuntu x86 22.04.
  • Para usar um sistema de arquivos Lustre com um cluster criado pelo Kubernetes Engine, o pacote do cliente Lustre deve ser instalado nos nós de trabalho que precisam montar o sistema de arquivos. Para obter mais informações sobre clientes Lustre, consulte Montando e Acessando um Lustre File System.
  • Os dados são criptografados em repouso, usando chaves de criptografia gerenciadas pela Oracle ou por você.
  • O Oracle Cloud Infrastructure File Storage with Lustre só está disponível nas regiões mostradas na Disponibilidade na documentação do File Storage com Lustre.

Provisionando uma PVC em um Novo Lustre File System com o Plug-in de Volume CSI

Observação

Os seguintes pré-requisitos se aplicam ao provisionar uma PVC em um novo sistema de arquivos Lustre criado dinamicamente pelo plug-in de volume CSI:
  • Os clusters devem estar executando o Kubernetes 1.32 ou posterior para provisionar uma PVC em um novo sistema de arquivos criado dinamicamente pelo plug-in de volume CSI.
  • Devem existir políticas adequadas do IAM para permitir que o plug-in de volume CSI crie e gerencie recursos do Lustre. Por exemplo:

    ALLOW any-user to manage lustre-file-family in compartment <compartment-name> where request.principal.type = 'cluster'
    ALLOW any-user to use virtual-network-family in compartment <compartment-name> where request.principal.type = 'cluster'
  • Se o compartimento ao qual pertence um pool de nós, uma sub-rede ou um sistema de arquivos for diferente do compartimento ao qual pertence um cluster, deverão existir políticas do serviço IAM para permitir que o plug-in de volume CSI acesse o local apropriado. Por exemplo:

    ALLOW any-user to manage lustre-file-family in TENANCY where request.principal.type = 'cluster'
    ALLOW any-user to use virtual-network-family in TENANCY where request.principal.type = 'cluster'
  • Para especificar uma chave de criptografia mestra gerenciada pelo usuário específica do serviço Vault para criptografar dados em repouso, devem existir políticas de IAM apropriadas para permitir que o serviço File Storage com Lustre acesse essa chave de criptografia mestra. Consulte Atualização da Criptografia do Sistema de Arquivos.

  • O pacote do cliente Lustre deve ser instalado em todos os nós de trabalho que precisam montar o sistema de arquivos Lustre.

Para provisionar dinamicamente uma PVC em um novo sistema de arquivos Lustre criado dinamicamente pelo plug-in de volume CSI no serviço File Storage with Lustre:

  1. Crie regras de segurança em um grupo de segurança de rede (recomendado) ou em uma lista de segurança para o sistema de arquivos Lustre e para a sub-rede de nós de trabalho do cluster.

    As regras de segurança a serem criadas dependem dos locais de rede relativos do sistema de arquivos Lustre e dos nós de trabalho que atuam como cliente, de acordo com os seguintes cenários:

    Esses cenários, as regras de segurança a serem criadas e onde criá-las, são totalmente descritos na documentação do serviço File Storage com Lustre (consulte Regras de Segurança Obrigatórias da VCN).

  2. Defina uma nova classe de armazenamento que use o provisionador lustre.csi.oraclecloud.com:
    1. Crie um arquivo de manifesto (por exemplo, em um arquivo chamado lustre-dyn-st-class.yaml), especifique um nome para a nova classe de armazenamento e especifique valores para parâmetros obrigatórios e opcionais:
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: <storage-class-name>
      provisioner: lustre.csi.oraclecloud.com
      parameters:
        availabilityDomain: <ad-name>
        compartmentId: <compartment-ocid>   # optional
        subnetId: <subnet-ocid>
        performanceTier: <value>
        fileSystemName: <name>               # optional
        kmsKeyId: <key-ocid>                 # optional
        nsgIds: '["<nsg-ocid>"]'             # optional
        rootSquashEnabled: "<true | false>"  # optional
        rootSquashUid: "<value>"             # optional
        rootSquashGid: "<value>"             # optional
        rootSquashClientExceptions: '["<ip-address>"]'   # optional
        oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}'
        oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}'
        setupLnet: "<true | false>"                    # optional
        lustreSubnetCidr: "<cidr-block>"      # optional
        lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]' # optional

      em que:

      • name: <storage-class-name>: Obrigatório. Um nome de sua escolha para a classe de armazenamento.
      • availabilityDomain: <ad-name>: Obrigatório. O nome do domínio de disponibilidade no qual o novo sistema de arquivos Lustre será criado. Por exemplo, availabilityDomain: US-ASHBURN-AD-1. Para descobrir o nome do domínio de disponibilidade a ser usado, execute o comando da CLI oci iam availability-domain list (ou use a operação ListAvailabilityDomains). Para obter mais informações, consulte Nomes de Domínio de Disponibilidade da Sua Tenancy.
      • compartmentId: <compartment-ocid>: Opcional. O OCID do compartimento ao qual o novo sistema de arquivos Lustre deve pertencer. Se não for especificado, o padrão será o mesmo compartimento do cluster. Por exemplo, compartmentId: ocid1.compartment.oc1..aaa______t6q
      • subnetId: <subnet-ocid>: Obrigatório. O OCID da sub-rede na qual o novo sistema de arquivos Lustre será montado. Por exemplo, subnetId: ocid1.subnet.oc1.iad.aaaa______kfa
      • performanceTier: <value>: Obrigatório. A camada de desempenho do sistema de arquivos Lustre. Valores permitidos:
        • MBPS_PER_TB_125
        • MBPS_PER_TB_250
        • MBPS_PER_TB_500
        • MBPS_PER_TB_1000
      • fileSystemName: <name>: Opcional. O nome do sistema de arquivos Lustre, com até 8 caracteres. Se não especificado, um valor padrão será gerado e usado aleatoriamente. Por exemplo, fileSystemName: aiworkfs
      • kmsKeyId: <key-ocid>: Opcional. O OCID de uma chave de criptografia mestra que você gerencia, com a qual criptografar dados em repouso. Se não for especificado, os dados serão criptografados em repouso usando chaves de criptografia gerenciadas pela Oracle. Por exemplo, kmsKeyId: ocid1.key.oc1.iad.ann______usj
      • nsgIds: '["<nsg-ocid>"]': Opcional. Um array JSON de até cinco OCIDs de grupo de segurança de rede para associar ao sistema de arquivos Lustre. Por exemplo, nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]'
      • rootSquashEnabled: "<true | false>": Opcional. Defina como true para restringir o acesso raiz dos clientes. O padrão é false.
      • rootSquashUid: "<value>": Opcional. Quando o squash raiz está ativado, as operações raiz são mapeadas para esse UID. O padrão é 65534.
      • rootSquashGid: "<value>": Opcional. Quando o squash raiz está ativado, as operações raiz são mapeadas para este GID. Assume 65534 como padrão.
      • rootSquashClientExceptions: '["<ip-address>"]': Opcional. Um array JSON de endereços IP ou blocos CIDR que não estão sujeitos a squash raiz (máximo de 10 entradas). Por exemplo, rootSquashClientExceptions: '["10.0.2.4"]'.
      • oci.oraclecloud.com/initial-defined-tags-override: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}' Opcional. Especifica uma tag definida para o novo sistema de arquivos. Por exemplo, oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}'

        Observe que, para aplicar tags definidas de um namespace de tag pertencente a um compartimento a um recurso do sistema de arquivos pertencente a outro compartimento, você deve incluir uma instrução de política para permitir que o cluster use o namespace de tag. Consulte Política Adicional do Serviço IAM quando um Cluster e um Namespace de Tag estão em Compartimentos Diferentes.

      • oci.oraclecloud.com/initial-freeform-tags-override: '{"<tag-key>": "<tag-value>"}' Opcional. Especifica uma tag de formato livre para o novo sistema de arquivos. Por exemplo, oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}'
      • setupLnet: "<true | false>": Opcional. Defina como true se o driver Lustre CSI deve executar a configuração da Rede Lustre (LNet) antes da montagem. É altamente recomendável incluir o parâmetro setupLnet e defini-lo como "true".
      • lustreSubnetCidr: "<cidr-block>": Opcional. Definir para o intervalo de rede de origem do nó de trabalho usado para o tráfego Lustre:
        • Quando usar: Especifique apenas uma faixa de rede se os nós de trabalho usarem uma VNIC secundária para estabelecer conexão com o sistema de arquivos Lustre. Esse CIDR deve corresponder ao bloco de sub-rede dessa VNIC secundária (por exemplo, 10.0.2.0/24).
        • Quando omitir: Não especifique uma faixa de rede se os nós de trabalho estiverem usando sua VNIC principal (a interface padrão) para conectividade Lustre.
        • Importante: Esse parâmetro é diferente do parâmetro subnetId do sistema de arquivos Lustre, que define onde o próprio sistema de arquivos Lustre está localizado.
      • lustrePostMountParameters: '[{"<parameter1>": <value>},{"<parameter2>": <value>}]': Opcional. Array JSON de parâmetros avançados do cliente Lustre a serem definidos após a montagem. Por exemplo, lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history": 600}]'

      Por exemplo:

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: lustre-dyn-storage
      provisioner: lustre.csi.oraclecloud.com
      parameters:
        availabilityDomain: US-ASHBURN-AD-1
        compartmentId: ocid1.compartment.oc1..aaa______t6q # optional
        subnetId: ocid1.subnet.oc1.iad.aaaa______kfa
        performanceTier: MBPS_PER_TB_250
        fileSystemName: aiworkfs                           # optional
        kmsKeyId: ocid1.key.oc1.iad.ann______usj           # optional
        nsgIds: '["ocid1.nsg.oc1.iad.aab______fea"]'       # optional
        oci.oraclecloud.com/initial-defined-tags-override: '{"Org": {"CostCenter": "AI"}}'
        oci.oraclecloud.com/initial-freeform-tags-override: '{"Project": "ML"}'
        setupLnet: "true"                    # optional
    2. Crie a classe de armazenamento a partir do arquivo de manifesto digitando:
      kubectl create -f <filename>

      Por exemplo:

      kubectl create -f lustre-dyn-st-class.yaml
  3. Crie uma PVC para ser provisionada pelo novo sistema de arquivos no File Storage com o serviço Lustre, da seguinte forma:
    1. Crie um arquivo de manifesto para definir a PVC:
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: <pvc-name>
      spec:
        accessModes:
          - <ReadWriteMany|ReadOnlyOncePod>
        storageClassName: "<storage-class-name>"
        resources:
          requests:
            storage: <capacity>

      em que:

      • name: <pvc-name>: Obrigatório. Por exemplo, lustre-dynamic-claim
      • storageClassName: "<storage-class-name>": Obrigatório. O nome da classe de armazenamento definida anteriormente. Por exemplo, lustre-dyn-storage.
      • accessModes: - <ReadWriteMany|ReadOnlyOncePod>: Obrigatório. Especifica como o sistema de arquivos deve ser montado e compartilhado pelos pods. Atualmente, ReadWriteMany e ReadOnlyOncePod são suportados. Por exemplo, ReadWriteMany.
      • storage: <capacity>: Obrigatório. Esse valor deve ser pelo menos 31.2T (ou 31200G). Você pode especificar uma capacidade maior, mas deve usar incrementos específicos que dependem da capacidade (consulte Aumentando a Capacidade do Sistema de Arquivos). Por exemplo, 31.2T.

      Por exemplo, o seguinte arquivo de manifesto (chamado lustre-dyn-claim.yaml) define uma PVC chamada lustre-dynamic-claim que é provisionada pelo sistema de arquivos definido na classe de armazenamento lustre-dyn-storage:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: lustre-dynamic-claim
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: "lustre-dyn-storage"
        resources:
          requests:
            storage: 31.2T
    2. Crie a PVC a partir do arquivo de manifesto digitando:
      kubectl create -f <filename> 
      Por exemplo:
      kubectl create -f lustre-dyn-claim.yaml

    Um novo PVC é criado. O plug-in de volume CSI cria um novo volume persistente (PV) e um novo sistema de arquivos no serviço File Storage with Lustre. Note que a criação de um novo sistema de arquivos Lustre leva pelo menos 10 minutos e pode levar mais tempo, dependendo do tamanho do sistema de arquivos. Use a Console ou a CLI para confirmar se o novo sistema de arquivos Lustre foi criado (consulte Listando Sistemas de Arquivos).

    O novo PVC está ligado ao novo PV. Os dados são criptografados em repouso, usando chaves de criptografia gerenciadas pela Oracle ou por você.

  4. Verifique se a PVC foi vinculada ao novo volume persistente, informando:

    kubectl get pvc

    Saída do exemplo:

    			
    NAME                   STATUS    VOLUME                    CAPACITY         ACCESSMODES   STORAGECLASS         AGE
    lustre-dynamic-claim   Bound     csi-lustre-<unique_ID>    30468750000Ki    RWX           lustre-dyn-storage   4m
  5. Use a nova PVC ao criar outros objetos, como pods. Por exemplo, você pode criar um novo pod com base na seguinte definição de pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: lustre-dynamic-app
    spec:
      containers:
        - name: aiworkload
          image: busybox:latest
          command: ["sleep", "3600"]
          volumeMounts:
            - name: lustre-vol
              mountPath: /mnt/lustre
      volumes:
        - name: lustre-vol
          persistentVolumeClaim:
            claimName: lustre-dynamic-claim
  6. Depois de criar um novo pod, conforme descrito no exemplo da etapa anterior, você pode verificar se o pod está usando a nova PVC digitando:

    kubectl describe pod lustre-dynamic-app
Dica

Se você prever um requisito frequente para criar dinamicamente novos PVs e novos sistemas de arquivos ao criar PVCs, poderá especificar que a nova classe de armazenamento que você criou deve ser usada como classe de armazenamento padrão para provisionar novas PVCs. Consulte a documentação do Kubernetes para obter mais detalhes.

Criptografando Dados em Repouso em um Novo Lustre File System

O serviço File Storage com Lustre sempre criptografa dados em repouso, usando chaves de criptografia gerenciadas pela Oracle por padrão. No entanto, você tem a opção de especificar a criptografia em repouso usando suas próprias chaves de criptografia principais que você gerencia no serviço Vault.

Dependendo de como você deseja criptografar dados em repouso, siga as instruções apropriadas abaixo:

  • Para usar o plug-in de volume CSI para criar dinamicamente um novo sistema de arquivos Lustre que use chaves de criptografia gerenciadas pela Oracle para criptografar dados em repouso, siga as etapas em Provisionando uma PVC em um Novo Lustre File System Usando o Plug-in de Volume CSI e não inclua o parâmetro kmsKeyId: <key-ocid> na definição da classe de armazenamento. Os dados são criptografados em repouso, usando chaves de criptografia gerenciadas pela Oracle.
  • Para usar o plug-in de volume CSI para criar dinamicamente um novo sistema de arquivos Lustre que usa chaves de criptografia mestras que você gerencia para criptografar dados em repouso, siga as etapas em Provisionamento uma PVC em um Novo Lustre File System Usando o Plug-in de Volume CSI, inclua o parâmetro kmsKeyId: <key-ocid> na definição da classe de armazenamento e especifique o OCID da chave de criptografia mestra no serviço Vault. Os dados são criptografados em repouso, usando a chave de criptografia especificada.

Provisionando uma PVC em uma Lustre File System Existente

Para criar uma PVC em um sistema de arquivos existente no serviço File Storage com Lustre (usando chaves de criptografia gerenciadas pela Oracle para criptografar dados em repouso):

  1. Crie um sistema de arquivos no serviço File Storage com Lustre, selecionando a opção de criptografia Criptografar usando chaves gerenciadas pela Oracle. Consulte Creating a Lustre File System.
  2. Crie regras de segurança em um grupo de segurança de rede (recomendado) ou em uma lista de segurança para o sistema de arquivos Lustre e para a sub-rede de nós de trabalho do cluster.
    As regras de segurança a serem criadas dependem das localizações de rede relativas do sistema de arquivos Lustre e dos nós de trabalho que atuam como cliente, de acordo com os seguintes cenários:

    Esses cenários, as regras de segurança a serem criadas e onde criá-las, estão totalmente descritos na documentação do serviço File Storage com Lustre (consulte Regras de Segurança de VCN Obrigatórias).

  3. Crie um PV suportado pelo sistema de arquivos no File Storage com o serviço Lustre da seguinte forma:
    1. Crie um arquivo de manifesto para definir um PV e, na seção csi:, defina:

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

        em que:

        • <MGSAddress> é o endereço do serviço de Gerenciamento do sistema de arquivos no serviço File Storage com Lustre
        • <LNetName> é o nome da rede LNet do sistema de arquivos no serviço File Storage com Lustre.
        • <MountName> é o nome da montagem usado ao criar o sistema de arquivos no serviço File Storage com Lustre.

        Por exemplo: 10.0.2.6@tcp:/testlustrefs

      • fsType a lustre
      • (opcional, mas recomendado) volumeAttributes.setupLnet a "true" se quiser que o driver Lustre CSI execute a configuração de lnet (Lustre Network) antes de montar o sistema de arquivos.
      • (opcional) volumeAttributes.lustreSubnetCidr para a faixa de rede de origem do nó de trabalho usada para tráfego de Lustre:
        • Quando usar: Especifique apenas uma faixa de rede se os nós de trabalho usarem uma VNIC secundária para estabelecer conexão com o sistema de arquivos Lustre. Esse CIDR deve corresponder ao bloco de sub-rede dessa VNIC secundária (por exemplo, 10.0.2.0/24).
        • Quando omitir: Não especifique uma faixa de rede se os nós de trabalho estiverem usando sua VNIC principal (a interface padrão) para conectividade Lustre.
        • Importante: Esse parâmetro é diferente do parâmetro subnetId do sistema de arquivos Lustre, que define onde o próprio sistema de arquivos Lustre está localizado.
      • (opcional) volumeAttributes.lustrePostMountParameters para definir parâmetros Lustre. Por exemplo:
        ...
            volumeAttributes:
              lustrePostMountParameters: '[{"*.*.*MDT*.lru_size": 11200},{"at_history" :
            600}]'

      Por exemplo, o seguinte arquivo de manifesto (denominado lustre-PV-example.yaml) define um PV chamado lustre-pv-example apoiado por um sistema de arquivos Lustre:

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: lustre-pv-example
      spec:
        capacity:
          storage: 31.2T
        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. Crie o PV do arquivo de manifesto digitando:
      kubectl apply -f <filename>

      Por exemplo:

      kubectl apply -f lustre-pv-example.yaml
    3. Verifique se o PV foi criado com sucesso digitando:

      kubectl get pv <pv-name>

      Por exemplo:

      kubectl get pv lustre-pv-example

      Saída do exemplo:

      
      NAME                CAPACITY        ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM   STORAGECLASS   REASON   AGE
      lustre-pv-example   30468750000Ki   RWX            Retain           Bound                                    56m
      
  4. Crie uma PVC que seja provisionada pelo PV que você criou, da seguinte forma:
    1. Crie um arquivo de manifesto para definir a PVC e definir:
      • storageClassName a "" Observe que você deve especificar um valor vazio para storageClassName, mesmo que a classe de armazenamento não seja aplicável no caso de provisionamento estático do armazenamento persistente. Se você não especificar um valor vazio para storageClassName, a classe de armazenamento padrão (oci-bv) será usada, o que causará um erro.
      • volumeName para o nome do PV que você criou (por exemplo, lustre-pv-example)

      Por exemplo, o seguinte arquivo de manifesto (denominado lustre-PVC-example.yaml) define uma PVC chamada lustre-pvc-example que se vinculará a um PV chamado lustre-pv-example:

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

      Observe que o elemento requests: storage: deve estar presente no arquivo de manifesto da PVC, e seu valor deve corresponder ao valor especificado para o elemento capacity: storage: no arquivo de manifesto do PV. Além disso, o valor do elemento requests: storage: é ignorado.

    2. Crie a PVC a partir do arquivo de manifesto inserindo:
      kubectl apply -f <filename>
      Por exemplo:
      kubectl apply -f lustre-pvc-example.yaml
    3. Verifique se a PVC foi criada e vinculada ao PV com sucesso digitando:

      kubectl get pvc <pvc-name>

      Por exemplo:

      kubectl get pvc lustre-pvc-example

      Saída do exemplo:

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

    A PVC é vinculada ao PV suportado pelo Armazenamento de Arquivos com o sistema de arquivos do serviço Lustre. Os dados são criptografados em repouso, usando chaves de criptografia gerenciadas pela Oracle.

  5. Use a nova PVC ao criar outros objetos, como implantações. Por exemplo:
    1. Crie um manifesto chamado luxre-app-example-deployment.yaml para definir uma implantação chamada lustre-app-example-deployment que use a PVC lustre-pvc-example, da seguinte 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. Crie a implantação a partir do arquivo de manifesto digitando:
      kubectl apply -f lustre-app-example-deployment.yaml
    3. Verifique se os pods de implantação foram criados com sucesso e estão em execução digitando:
      kubectl get pods

      Exemplo de saída:

      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

Provisionando uma PVC em um Lustre File System Existente com Opções de Montagem

Você pode otimizar o desempenho e controlar o acesso a um sistema de arquivos Lustre existente especificando opções de montagem para o PV. A especificação de opções de montagem permite ajustar como os pods interagem com o sistema de arquivos.

Para incluir opções de montagem:

  1. Comece seguindo as instruções em Provisionando uma PVC em um Lustre File System Existente.
  2. No manifesto PV descrito em Provisioning a PVC on an Existing Lustre File System, adicione o campo spec.mountOptions, que permite especificar como o PV deve ser montado por pods.

    Por exemplo, no arquivo de manifesto lustre-pv-example.yaml mostrado em Provisionando uma PVC em um Lustre File System Existente, você pode incluir o campo mountOptions da seguinte forma:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: lustre-pv-example
    spec:
      capacity:
        storage: 31.2T
      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"

    Neste exemplo, o campo mountOptions é definido como ro, indicando que os pods devem ter acesso somente leitura ao sistema de arquivos. Para obter mais informações sobre opções de montagem PV, consulte Volumes Persistentes na documentação do Kubernetes.

Criptografando Dados em Repouso em um Lustre File System Existente

O serviço File Storage com Lustre sempre criptografa dados em repouso, usando chaves de criptografia gerenciadas pela Oracle por padrão. No entanto, você tem a opção de especificar a criptografia em repouso usando suas próprias chaves de criptografia mestras que você mesmo gerencia no serviço Vault.

Para obter mais informações sobre o File Storage com sistemas de arquivos Lustre que usam chaves de criptografia gerenciadas pela Oracle ou suas próprias chaves de criptografia mestras que você mesmo gerencia, consulte Atualizando a Criptografia do Sistema de Arquivos.