Criando Armazenamento de Sistema de Arquivos Persistente com um Sistema de Arquivos Existente

No Compute Cloud@Customer, você pode provisionar uma PVC em um sistema de arquivos existente.

Este procedimento cria um ponto de acesso NFS, um sistema de arquivos e uma exportação do sistema de arquivos. Em seguida, usa o comando kubectl para criar a classe de armazenamento, o volume persistente e a reivindicação de volume persistente.

  1. Crie um ponto de montagem NFS.

    Para obter instruções, consulte Criando um Ponto de Acesso NFS.

    Importante

    Para garantir que o ponto de acesso NFS possa ser acessado por nós de trabalho, crie o ponto de acesso NFS na sub-rede que tem a sub-rede de trabalho descrita em Criando Recursos de Rede do OKE. Certifique-se de que a porta TCP 2049 para o servidor NFS esteja aberta nessa sub-rede.

    Observe o OCID do conjunto de exportação e o OCID do ponto de acesso NFS. O OCID do conjunto de exportação é necessário para criar a exportação do sistema de arquivos, e o OCID do ponto de acesso NFS é necessário para criar a classe de armazenamento em etapas posteriores.

    Você só pode ter um ponto de acesso NFS por VCN.

  2. Crie um sistema de arquivos.

    Para obter instruções, consulte Creating a File System.

    Você só pode criar um sistema de arquivos por VCN. Você pode ter várias classes de armazenamento, volumes persistentes e reivindicações de volume persistentes por cluster, e todos eles compartilham um NFS.

  3. Crie uma exportação do sistema de arquivos para associá-lo ao sistema de arquivos.

    Para obter instruções, consulte Criando uma Exportação para um Sistema de Arquivos.

    • Especifique o OCID do conjunto de exportação na saída da criação do ponto de acesso NFS.

    • Especifique o CIDR mais longo (rede menor) na faixa de CIDR especificada quando você criou a sub-rede "trabalhador", conforme descrito em Criando Recursos de Rede do OKE.

    Anote o caminho de exportação e o endereço IP do ponto de acesso NFS.

  4. Crie uma classe de armazenamento, especificando o OCID do ponto de acesso NFS com base na saída da etapa de criação do ponto de acesso NFS.

    $ kubectl create -f sc.yaml

    Veja a seguir o conteúdo do arquivo sc.yaml:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: pca-fss
    provisioner: fss.csi.oraclecloud.com
    parameters:
      mntTargetId: ocid1.mounttarget.unique_ID
                

    Os valores das propriedades apiVersion e provisioner são padrão. O valor do nome da classe de armazenamento na seção de metadados é especificado pelo usuário. Você pode criar mais de uma classe de armazenamento por ponto de acesso NFS, e o nome da classe de armazenamento é usado nas etapas a seguir para criar um volume persistente e uma reivindicação de volume persistente.

    Use o subcomando get sc para exibir informações sobre a nova classe de armazenamento:

    $ kubectl get sc
  5. Crie um volume persistente, especificando o nome da classe de armazenamento, o caminho de exportação e o endereço IP do ponto de acesso NFS.

    O nome da classe de armazenamento está nos metadados do arquivo sc.yaml na etapa anterior. O caminho de exportação e o endereço IP do ponto de acesso NFS são saída da etapa de criação de exportação do sistema de arquivos. Consulte a Etapa 3 acima.

    $ kubectl create -f pv.yaml

    Veja a seguir o conteúdo do arquivo pv.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: fss-pv
    spec:
      storageClassName: pca-fss
      capacity:
        storage: 200Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - nosuid
      nfs:
        server: mount_target_IP_address
        path: "/export/unique_ID"
        readOnly: false

    O nome do volume persistente na seção metadata é especificado pelo usuário. Você pode ter mais de um volume persistente em uma classe de armazenamento.

    Na seção nfs, o valor server é o endereço IP do ponto de acesso NFS e o valor path é o caminho de exportação.

    Use o subcomando get pv para exibir informações sobre o novo volume persistente:

    $ kubectl get pv
    NAME    CAPACITY  ACCESS MODES  RECLAIM POLICY  STATUS  CLAIM            STORAGECLASS  REASON  AGE
    fss-pv  200Gi     RWX           Retain          Bound   default/fss-pvc  pca-fss               20h
  6. Crie uma reivindicação de volume persistente, especificando o nome do volume persistente e o nome da classe de armazenamento.

    O nome do volume persistente e o nome da classe de armazenamento estão na saída do comando get pv.

    Aguarde que o status da PVC seja Vinculado antes de usar este armazenamento.

    kubectl create -f pvc.yaml

    Veja a seguir o conteúdo do arquivo pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: fss-pvc
    spec:
      storageClassName: pca-fss
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 200Gi
      volumeName: fss-pv

    O nome da reivindicação de volume persistente na seção metadata é especificado pelo usuário. Você pode ter mais de uma reivindicação de volume persistente em um volume persistente.

    O valor da propriedade accessModes deve ser ReadWriteMany.

    O valor da propriedade storage deve ser de pelo menos 50 gigabytes.

    Execute o seguinte comando para exibir informações sobre a nova reivindicação de volume persistente:

    $ kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
    fss-pvc   Bound    fss-pv   200Gi      RWX           pca-fss        2h
  7. Use a PVC ao criar outros objetos, como pods.

    Por exemplo, você pode criar um novo pod com base na seguinte definição de pod, que instrui o sistema a usar a PVC fss-pvc como volume nginx, que é montado pelo pod em /persistent-storage:

    apiVersion: v1
    kind: Pod
    metadata:
      name: fss-dynamic-app
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - name: http
              containerPort: 80
          volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/nginx/html
      volumes:
      - name: persistent-storage
        persistentVolumeClaim:
          claimName: fss-pvc

    Execute o seguinte comando para verificar se o pod está usando a nova PVC:

    $ kubectl describe pod fss-dynamic-app