Creación de un almacenamiento de sistema de archivos persistente usando un sistema de archivos existente

En Compute Cloud@Customer, puede aprovisionar una PVC en un sistema de archivos existente.

Este procedimiento crea un destino de montaje, un sistema de archivos y una exportación de sistema de archivos. A continuación, utiliza el comando kubectl para crear la clase de almacenamiento, el volumen persistente y la reclamación de volumen persistente.

  1. Crear un destino de montaje.

    Para obtener instrucciones, consulte Creating a Mount Target.

    Importante

    Para asegurarse de que se pueda acceder al destino de montaje desde los nodos de trabajador, cree el destino de montaje en la subred que tenga la subred de trabajador descrita en Creating OKE Network Resources. Asegúrese de que el puerto TCP 2049 para el servidor NFS esté abierto en esa subred.

    Observe el OCID del juego de exportación y el OCID del destino de montaje. El OCID del juego de exportación es necesario para crear la exportación del sistema de archivos y el OCID del destino de montaje es necesario para crear la clase de almacenamiento en pasos posteriores.

    Solo puede tener un destino de montaje por VCN.

  2. Cree un sistema de archivos.

    Para obtener instrucciones, consulte Creating a File System.

    Solo puede crear un sistema de archivos por VCN. Puede tener varias clases de almacenamiento, volúmenes persistentes y reclamaciones de volúmenes persistentes por cluster, y todos ellos comparten un NFS.

  3. Cree una exportación de sistema de archivos para asociar el destino de montaje al sistema de archivos.

    Para obtener instrucciones, consulte Creating an Export for a File System.

    • Especifique el OCID del juego de exportación de la salida al crear el destino de montaje.

    • Especifique el CIDR más largo (red más pequeña) en el rango de CIDR que especificó al crear la subred de "trabajador", como se describe en Creating OKE Network Resources.

    Observe la ruta de exportación y la dirección IP del destino de montaje.

  4. Cree una clase de almacenamiento especificando el OCID de destino de montaje a partir de la salida del paso de creación de destino de montaje.

    $ kubectl create -f sc.yaml

    A continuación se muestra el contenido del archivo sc.yaml:

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

    Los valores de las propiedades apiVersion y provisioner son estándar. El valor del nombre de la clase de almacenamiento en la sección de metadatos está especificado por el usuario. Puede crear más de una clase de almacenamiento por destino de montaje, y el nombre de la clase de almacenamiento se utiliza en los siguientes pasos para crear una reclamación de volumen persistente y volumen persistente.

    Utilice el subcomando get sc para ver información sobre la nueva clase de almacenamiento:

    $ kubectl get sc
  5. Cree un volumen persistente especificando el nombre de la clase de almacenamiento, la ruta de exportación y la dirección IP del destino de montaje.

    El nombre de la clase de almacenamiento está en los metadatos del archivo sc.yaml del paso anterior. La ruta de exportación y la dirección IP del destino de montaje se muestran desde el paso de exportación del sistema de archivos de creación. Consulte el paso 3 anterior.

    $ kubectl create -f pv.yaml

    A continuación se muestra el contenido del archivo 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

    El nombre de volumen persistente de la sección metadata está especificado por el usuario. Puede tener más de un volumen persistente en una clase de almacenamiento.

    En la sección nfs, el valor server es la dirección IP de destino de montaje y el valor path es la ruta de exportación.

    Utilice el subcomando get pv para ver información sobre el nuevo volumen 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. Cree una reclamación de volumen persistente especificando el nombre del volumen persistente y el nombre de la clase de almacenamiento.

    El nombre del volumen persistente y el nombre de la clase de almacenamiento se encuentran en la salida del comando get pv.

    Espere a que el estado de PVC sea Enlazado antes de utilizar este almacenamiento.

    kubectl create -f pvc.yaml

    A continuación se muestra el contenido del archivo pvc.yaml:

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

    El nombre de reclamación de volumen persistente de la sección metadata está especificado por el usuario. Puede tener más de una reclamación de volumen persistente en un volumen persistente.

    El valor de la propiedad accessModes debe ser ReadWriteMany.

    El valor de la propiedad storage debe ser de al menos 50 GB.

    Ejecute el siguiente comando para ver información sobre la nueva reclamación de volumen persistente:

    $ kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
    fss-pvc   Bound    fss-pv   200Gi      RWX           pca-fss        2h
  7. Utilice la PVC al crear otros objetos, como pods.

    Por ejemplo, puede crear un nuevo pod a partir de la siguiente definición de pod, que indica al sistema que utilice la PVC fss-pvc como volumen nginx, montado por el pod en /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

    Ejecute el siguiente comando para verificar que el pod está utilizando la nueva PVC:

    $ kubectl describe pod fss-dynamic-app