Création d'un stockage de système de fichiers persistant à l'aide du plugiciel de volume CSI
Sur Compute Cloud@Customer, vous pouvez provisionner une revendication de volume persistant sur un nouveau système de fichiers à l'aide du plugiciel de volume CSI. Utilisez la commande kubectl pour créer la classe de stockage et la revendication de volume persistant. Le plugiciel de volume CSI provisionne la revendication de volume persistant sur un nouveau système de fichiers.
Vous ne pouvez avoir qu'une seule cible de montage et 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. Toutes les classes de stockage, les volumes persistants et les revendications de volume persistant d'une grappe partagent un système NFS.
-
Créez une nouvelle classe de stockage qui utilise le provisionneur
fss.csi.oraclecloud.com.$ kubectl create -f sc.yaml
Le contenu du fichier manifeste
sc.yamlest le suivant :kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: fss-dyn-storage provisioner: fss.csi.oraclecloud.com parameters: availabilityDomain: AD-1 compartmentOcid: ocid1.compartment.unique_ID mountTargetSubnetOcid: ocid1.subnet.unique_ID exportPath: AUTOSELECT exportOptions: "[{\"source\":\"0.0.0.0/0\",\"requirePrivilegedSourcePort\":false,\"access\":\"READ_WRITE\",\"identitySquash\":\"NONE\"}]" encryptInTransit: "false"-
Le nom de la nouvelle classe de stockage est
fss-dyn-storage. -
mountTargetSubnetOcidoumountTargetOcidest requis. La valeur demountTargetSubnetOcidest l'OCID du sous-réseau dans lequel vous voulez que le plugiciel CSI crée une cible de montage. La valeur demountTargetOcidest l'OCID d'une cible de montage existante. Si vous spécifiezmountTargetSubnetOcidetmountTargetOcid,mountTargetOcidest utilisé etmountTargetSubnetOcidest ignoré.Pour vous assurer que la cible de montage peut être atteinte à partir des noeuds de travail, spécifiez le sous-réseau qui a une configuration telle que le sous-réseau de "travailleur" décrit sous Création d'un sous-réseau de travail (superposition de canal) ou Création d'un sous-réseau de travail (VCN-Native Pod) ou créez la cible de montage sur le sous-réseau qui a une configuration telle que le sous-réseau de travail. Assurez-vous que le port TCP 2049 vers le serveur NFS est ouvert sur ce sous-réseau.
-
compartmentOcidest facultatif. Cette valeur est l'OCID du compartiment dans lequel le nouveau système de fichiers (et la nouvelle cible de montage, simountTargetSubnetOcidest spécifié) sera créé. La valeur par défaut est le même compartiment que la grappe. -
Vous devez spécifier
AUTOSELECTcomme valeur pourexportPath. -
La valeur
exportOptionsest l'entrée des options d'exportation NFS dans l'exportation du système de fichiers qui définit l'accès accordé aux clients NFS lors de la connexion à une cible de montage.sourcepeut être une seule adresse IP ou un seul intervalle de blocs CIDR. Cette valeur est un jeu de paramètres au format JSON. -
La valeur de
encryptInTransitindique s'il faut chiffrer les données en transit.
-
-
Créez une revendication de volume persistant à provisionner par le nouveau système de fichiers dans le service de stockage de fichiers.
$ kubectl create -f fss-dyn-claim.yaml
Le contenu du fichier manifeste
fss-dyn-claim.yamlest le suivant :apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "fss-dyn-storage" resources: requests: storage: 50Gi -
Vérifiez que la PVC a été liée au nouveau volume persistant.
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE fss-dynamic-claim Bound csi-fss-f6823a66-8b6f-4c42-9d1f-d25723e69257 50Gi RWX fss-dyn-storage 6m47s -
Utilisez la nouvelle revendication de volume persistant lorsque vous créez des objets tels que des pods.
Voici un exemple de création d'objet :
$ kubectl create nginx.yamlVoici le contenu du fichier
nginx.yaml. VoirclaimNamesur la dernière ligne :apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx_image_url ports: - name: http containerPort: 80 volumeMounts: - name: persistent-storage mountPath: /usr/share/nginx/html volumes: - name: persistent-storage persistentVolumeClaim: claimName: fss-dynamic-claimVérifiez que l'objet est créé et déployé :
$ kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 0 104s