Création d'un stockage de système de fichiers persistant à l'aide d'un système de fichiers existant

Sur Compute Cloud@Customer, vous pouvez provisionner une revendication 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 une exportation de système de fichiers. Utilisez ensuite la commande kubectl pour créer la classe de stockage, le volume persistant et la revendication de volume persistant.

  1. Créer une cible de montage.

    Pour obtenir des instructions, voir Création d'une cible de montage.

    Important

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

    Notez l'OCID du jeu d'exportations et l'OCID de la cible de montage. L'OCID du jeu d'exportations est requis pour créer l'exportation du système de fichiers, et l'OCID de la cible de montage est requis pour créer la classe de stockage dans les é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, voir 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, des volumes persistants et des revendications de volumes persistants par grappe, et ils partagent tous un NFS.

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

    Pour obtenir des instructions, voir Création d'une exportation pour un système de fichiers.

    • Spécifiez l'OCID du jeu d'exportations à partir de la sortie de la création de la cible de montage.

    • Spécifiez le CIDR le plus long (réseau le plus petit) dans l'intervalle CIDR que vous avez spécifié lors de la création du sous-réseau de "travailleur", comme décrit dans Création de ressources de réseau OKE.

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

  4. Créez une classe de stockage, en spécifiant 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 de métadonnées est spécifiée par l'utilisateur. Vous pouvez créer plus d'une classe de stockage par cible de montage, et le nom de la classe de stockage est utilisé dans les étapes suivantes pour créer une revendication de volume persistant et de volume persistant.

    Utilisez la sous-commande get sc pour voir les informations sur la nouvelle classe de stockage :

    $ kubectl get sc
  5. Créez un volume persistant en spécifiant le nom de la classe de stockage, le chemin d'exportation 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 à l'étape précédente. Le chemin d'exportation et l'adresse IP de la cible de montage sont extraits de l'étape de création de l'exportation du 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 du volume persistant dans la section metadata est spécifié par l'utilisateur. Vous pouvez avoir plusieurs volumes persistants dans une classe de stockage.

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

    Utilisez la sous-commande get pv pour voir les 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 revendication de volume persistant, en spécifiant le nom du volume persistant et le nom de la classe de stockage.

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

    Attendez que le statut de la revendication de volume persistant 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 revendication de volume persistant dans la section metadata est spécifié par l'utilisateur. Vous pouvez avoir plusieurs revendications 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 voir les informations sur la nouvelle revendication 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 revendication de volume persistant lors de la création d'autres objets, tels que des pods.

    Par exemple, vous pouvez créer un nouveau pod à partir de la définition de pod suivante, qui demande au système d'utiliser la PVC fss-pvc en tant que volume nginx, monté par le pod sur /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 revendication de volume persistant :

    $ kubectl describe pod fss-dynamic-app