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
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:
- 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).
- Defina uma nova classe de armazenamento que use o provisionador
lustre.csi.oraclecloud.com:- 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>}]' # optionalem 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 CLIoci 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______t6qsubnetId: <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______kfaperformanceTier: <value>: Obrigatório. A camada de desempenho do sistema de arquivos Lustre. Valores permitidos:MBPS_PER_TB_125MBPS_PER_TB_250MBPS_PER_TB_500MBPS_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: aiworkfskmsKeyId: <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______usjnsgIds: '["<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 comotruepara 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. Assume65534como 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 comotruese o driver Lustre CSI deve executar a configuração da Rede Lustre (LNet) antes da montagem. É altamente recomendável incluir o parâmetrosetupLnete 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
subnetIddo sistema de arquivos Lustre, que define onde o próprio sistema de arquivos Lustre está localizado.
- 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,
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 - 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
- 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:
- Crie uma PVC para ser provisionada pelo novo sistema de arquivos no File Storage com o serviço Lustre, da seguinte forma:
- 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,ReadWriteManyeReadOnlyOncePodsão suportados. Por exemplo,ReadWriteMany. -
storage: <capacity>: Obrigatório. Esse valor deve ser pelo menos31.2T(ou31200G). 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 chamadalustre-dynamic-claimque é provisionada pelo sistema de arquivos definido na classe de armazenamentolustre-dyn-storage:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "lustre-dyn-storage" resources: requests: storage: 31.2T -
- 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ê.
- Crie um arquivo de manifesto para definir a PVC:
-
Verifique se a PVC foi vinculada ao novo volume persistente, informando:
kubectl get pvcSaída do exemplo:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE lustre-dynamic-claim Bound csi-lustre-<unique_ID> 30468750000Ki RWX lustre-dyn-storage 4m -
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 -
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
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):
- 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.
- 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).
- Crie um PV suportado pelo sistema de arquivos no File Storage com o serviço Lustre da seguinte forma:
-
Crie um arquivo de manifesto para definir um PV e, na seção
csi:, defina:-
driveralustre.csi.oraclecloud.com -
volumeHandlea<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 -
-
fsTypealustre - (opcional, mas recomendado)
volumeAttributes.setupLneta"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.lustreSubnetCidrpara 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
subnetIddo sistema de arquivos Lustre, que define onde o próprio sistema de arquivos Lustre está localizado.
- 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,
- (opcional)
volumeAttributes.lustrePostMountParameterspara 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-exampleapoiado 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" -
- Crie o PV do arquivo de manifesto digitando:
kubectl apply -f <filename>Por exemplo:
kubectl apply -f lustre-pv-example.yaml -
Verifique se o PV foi criado com sucesso digitando:
kubectl get pv <pv-name>Por exemplo:
kubectl get pv lustre-pv-exampleSaída do exemplo:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv-example 30468750000Ki RWX Retain Bound 56m
-
- Crie uma PVC que seja provisionada pelo PV que você criou, da seguinte forma:
- Crie um arquivo de manifesto para definir a PVC e definir:
-
storageClassNamea""Observe que você deve especificar um valor vazio parastorageClassName, 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 parastorageClassName, a classe de armazenamento padrão (oci-bv) será usada, o que causará um erro. -
volumeNamepara 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-exampleque se vinculará a um PV chamadolustre-pv-example:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: lustre-pvc-example spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: lustre-pv-example resources: requests: storage: 31.2TObserve que o elemento
requests: storage:deve estar presente no arquivo de manifesto da PVC, e seu valor deve corresponder ao valor especificado para o elementocapacity: storage:no arquivo de manifesto do PV. Além disso, o valor do elementorequests: storage:é ignorado. -
- Crie a PVC a partir do arquivo de manifesto inserindo:
kubectl apply -f <filename>Por exemplo:kubectl apply -f lustre-pvc-example.yaml -
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-exampleSaí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.
- Crie um arquivo de manifesto para definir a PVC e definir:
- Use a nova PVC ao criar outros objetos, como implantações. Por exemplo:
- Crie um manifesto chamado luxre-app-example-deployment.yaml para definir uma implantação chamada
lustre-app-example-deploymentque use a PVClustre-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 - Crie a implantação a partir do arquivo de manifesto digitando:
kubectl apply -f lustre-app-example-deployment.yaml - Verifique se os pods de implantação foram criados com sucesso e estão em execução digitando:
kubectl get podsExemplo 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
- Crie um manifesto chamado luxre-app-example-deployment.yaml para definir uma implantação chamada
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:
- Comece seguindo as instruções em Provisionando uma PVC em um Lustre File System Existente.
- 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
mountOptionsda 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 comoro, 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.