Création d'un stockage de système de fichiers persistant avec un système de fichier existant

Sur Compute Cloud@Customer, vous pouvez provisionner une demande de volume persistant sur un système de fichiers existant.

Cette procédure crée une cible de montage, un système de fichiers et un export de système de fichiers. Utilisez ensuite la commande kubectl pour créer la classe de stockage, le volume persistant et la demande de volume persistant.

  1. Créez une cible de montage.

    Pour obtenir des instructions, reportez-vous à Création d'une cible de montage.

    Important

    Pour vous assurer que la cible de montage peut être atteinte à partir des noeuds de processus actif, créez la cible de montage sur le sous-réseau qui contient le sous-réseau de processus actif décrit dans Création de ressources réseau OKE. Assurez-vous que le port TCP 2049 vers le serveur NFS est ouvert sur ce sous-réseau.

    Notez l'OCID de l'ensemble d'éléments d'export et l'OCID de la cible de montage. L'OCID de l'ensemble d'éléments d'export est requis pour créer l'export de système de fichiers, et l'OCID de la cible de montage est requis pour créer la classe de stockage lors des étapes ultérieures.

    Vous ne pouvez avoir qu'une seule cible de montage par VCN.

  2. Créez un système de fichiers.

    Pour obtenir des instructions, reportez-vous à Création d'un système de fichiers.

    Vous ne pouvez créer qu'un seul système de fichiers par VCN. Vous pouvez avoir plusieurs classes de stockage, volumes persistants et demandes de volume persistant par cluster, et ils partagent tous un NFS.

  3. Créez un export de système de fichiers pour associer la cible de montage au système de fichiers.

    Pour obtenir des instructions, reportez-vous à Création d'un export pour un système de fichiers.

    • Indiquez l'OCID de l'ensemble d'éléments d'export à partir de la sortie de la création de la cible de montage.

    • Indiquez le CIDR (réseau le plus petit) le plus long de la plage CIDR que vous avez indiquée lors de la création du sous-réseau de "processus actif", comme décrit dans la section Création de ressources réseau OKE.

    Notez le chemin d'export et l'adresse IP de la cible de montage.

  4. Créez une classe de stockage en indiquant l'OCID de la cible de montage à partir de la sortie de l'étape de création de la cible de montage.

    $ kubectl create -f sc.yaml

    Le contenu du fichier sc.yaml est le suivant :

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

    Les valeurs des propriétés apiVersion et provisioner sont standard. La valeur du nom de la classe de stockage dans la section des métadonnées est indiquée par l'utilisateur. Vous pouvez créer plusieurs classes de stockage par cible de montage. Le nom de la classe de stockage est utilisé dans les étapes suivantes pour créer une demande de volume persistant et de volume persistant.

    Utilisez la sous-commande get sc pour afficher des informations sur la nouvelle classe de stockage :

    $ kubectl get sc
  5. Créez un volume persistant en indiquant le nom de la classe de stockage, le chemin d'export et l'adresse IP de la cible de montage.

    Le nom de la classe de stockage se trouve dans les métadonnées du fichier sc.yaml de l'étape précédente. Le chemin d'export et l'adresse IP de la cible de montage proviennent de l'étape de création d'export de système de fichiers. Voir l'étape 3 ci-dessus.

    $ kubectl create -f pv.yaml

    Le contenu du fichier pv.yaml est le suivant :

    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

    Le nom de volume persistant dans la section metadata est spécifié par l'utilisateur. Une classe de stockage peut contenir plusieurs volumes persistants.

    Dans la section nfs, la valeur server est l'adresse IP de la cible de montage et la valeur path est le chemin d'export.

    Utilisez la sous-commande get pv pour afficher des informations sur le nouveau volume persistant :

    $ 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. Créez une demande de volume persistant en indiquant le nom du volume persistant et le nom de la classe de stockage.

    Le nom de volume persistant et le nom de classe de stockage figurent dans la sortie de la commande get pv.

    Attendez que le statut PVC soit lié avant d'utiliser ce stockage.

    kubectl create -f pvc.yaml

    Le contenu du fichier pvc.yaml est le suivant :

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

    Le nom de la demande de volume persistant dans la section metadata est spécifié par l'utilisateur. Vous pouvez avoir plusieurs demandes de volume persistant sur un volume persistant.

    La valeur de la propriété accessModes doit être ReadWriteMany.

    La valeur de la propriété storage doit être d'au moins 50 gigaoctets.

    Exécutez la commande suivante pour afficher les informations sur la nouvelle demande de volume persistant :

    $ kubectl get pvc
    NAME      STATUS   VOLUME   CAPACITY   ACCESSMODES   STORAGECLASS   AGE
    fss-pvc   Bound    fss-pv   200Gi      RWX           pca-fss        2h
  7. Utilisez la PVC lors de la création d'autres objets, tels que des pods.

    Par exemple, vous pouvez créer un pod à partir de la définition de pod suivante, qui indique au système d'utiliser la PVC fss-pvc comme volume nginx, monté par le pod dans /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

    Exécutez la commande suivante pour vérifier que le pod utilise la nouvelle demande de volume persistant :

    $ kubectl describe pod fss-dynamic-app