Criando Armazenamento Persistente do Sistema de Arquivos Usando um Sistema de Arquivos Existente

No Private Cloud Appliance, 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. Criar um ponto de acesso 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. Criar 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 persistente por cluster, e todos eles compartilham um NFS.

  3. Crie uma exportação do sistema de arquivos para associar o ponto de acesso NFS ao sistema de arquivos.

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

    Observe 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 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 uma reivindicação de volume persistente e 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 no arquivo sc.yaml na etapa anterior. O caminho de exportação e o endereço IP do ponto de acesso NFS são gerados na etapa de exportação do sistema de arquivos de criação. Consulte a Etapa 3.

    $ 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 o status de PVC ser 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 ter 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 a seguinte definição de pod, que instrui o sistema a usar a PVC fss-pvc como o 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