Création d'un stockage de système de fichiers persistant à l'aide du module d'extension de volume CSI
Sur Private Cloud Appliance, vous pouvez provisionner une demande de volume persistant sur un nouveau système de fichiers à l'aide du module d'extension de volume CSI. Utilisez la commande kubectl pour créer la classe de stockage et la demande de volume persistant. Le module d'extension de volume CSI provisionne la demande de volume persistant sur un nouveau système de fichiers.
Vous ne pouvez avoir qu'une cible de montage et un système de fichiers par VCN. Vous pouvez disposer de plusieurs classes de stockage, volumes persistants et demandes de volume persistant par cluster. Toutes les classes de stockage, les volumes persistants et les demandes de volume persistant dans un cluster partagent un NFS.
-
Créez une classe de stockage qui utilise le provisionnement
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"-
La nouvelle classe de stockage porte le nom
fss-dyn-storage. -
mountTargetSubnetOcidoumountTargetOcidest requis. La valeur demountTargetSubnetOcidest l'OCID du sous-réseau sur lequel vous souhaitez que le module d'extension CSI crée une cible de montage. La valeur demountTargetOcidest l'OCID d'une cible de montage existante. Si vous indiquez à la foismountTargetSubnetOcidetmountTargetOcid,mountTargetOcidest utilisé etmountTargetSubnetOcidest ignoré.Pour vous assurer que la cible de montage peut être atteinte à partir des noeuds de processus actif, indiquez le sous-réseau qui présente une configuration telle que le sous-réseau "worker" décrit dans Création d'un sous-réseau de processus actif (superposition de canal) ou Création d'un sous-réseau de processus actif (pod natif VCN), ou créez la cible de montage sur le sous-réseau qui présente une configuration telle que le sous-réseau de processus actif. 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 indiqué) seront créés. La valeur par défaut est le même compartiment que le cluster. -
Vous devez indiquer
AUTOSELECTcomme valeur pourexportPath. -
La valeur
exportOptionsest l'entrée des options d'export NFS dans l'export de système de fichiers qui définit l'accès accordé aux clients NFS lorsqu'ils se connectent à une cible de montage.sourcepeut être une adresse IP unique ou une plage de blocs CIDR. Cette valeur est un ensemble de paramètres au format JSON. -
La valeur de
encryptInTransitindique si les données doivent être cryptées en transit.
-
-
Créez une demande de volume persistant à provisionner par le nouveau système de fichiers dans le service File Storage.
$ 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 demande de volume persistance a été liée à ce 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 demande de volume persistant lorsque vous créez des objets tels que des pods.
Voici un exemple de création d'objet :
$ kubectl create nginx.yamlLe contenu du fichier
nginx.yamlest le suivant. Reportez-vous à la pageclaimNamesur 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