Creazione di memorizzazione file system persistente mediante il plugin volume CSI
In Compute Cloud@Customer è possibile eseguire il provisioning di un PVC in un nuovo file system utilizzando il plugin volume CSI. Utilizzare il comando kubectl per creare la classe di storage e la richiesta di volume persistente. Il plugin volume CSI esegue il provisioning del PVC su un nuovo file system.
Puoi avere una sola destinazione di accesso e un solo file system per ogni VCN. È possibile disporre di più classi di storage, volumi persistenti e richieste di volume persistenti per cluster. Tutte le classi di storage, i volumi persistenti e le richieste di volume persistenti in un cluster condividono un NFS.
-
Creare una nuova classe di storage che utilizzi il provisioninger
fss.csi.oraclecloud.com.$ kubectl create -f sc.yaml
Di seguito è riportato il contenuto del file manifesto
sc.yaml.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"-
Il nome della nuova classe di memorizzazione è
fss-dyn-storage. -
È necessario specificare
mountTargetSubnetOcidomountTargetOcid. Il valore dimountTargetSubnetOcidè l'OCID della subnet in cui si desidera che il plugin CSI crei una destinazione di accesso. Il valoremountTargetOcidcorrisponde all'OCID di una destinazione di accesso esistente. Se si specifica siamountTargetSubnetOcidchemountTargetOcid, viene usatomountTargetOcidemountTargetSubnetOcidviene ignorato.Per assicurarsi che la destinazione di accesso possa essere raggiunta dai nodi di lavoro, specificare la subnet con configurazione simile a quella della subnet "worker" descritta in Creazione di risorse di rete OKE o creare la destinazione di accesso nella subnet con configurazione simile a quella della subnet di lavoro. Assicurarsi che la porta TCP 2049 sul server NFS sia aperta in tale sottorete.
-
compartmentOcidè facoltativo. Questo valore è l'OCID del compartimento in cui verrà creato il nuovo file system (e la nuova destinazione di accesso, se viene specificatomountTargetSubnetOcid). Il valore predefinito è lo stesso compartimento del cluster. -
È necessario specificare
AUTOSELECTcome valore perexportPath. -
Il valore
exportOptionsindica la voce delle opzioni di esportazione NFS all'interno dell'esportazione del file system che definisce l'accesso concesso ai client NFS quando si connettono a una destinazione di accesso.sourcepuò essere un singolo indirizzo IP o un intervallo di blocchi CIDR. Questo valore è un set di parametri in formato JSON. -
Il valore
encryptInTransitspecifica se cifrare i dati in transito.
-
-
Creare un PVC di cui eseguire il provisioning dal nuovo file system nel servizio di storage di file.
$ kubectl create -f fss-dyn-claim.yaml
Di seguito è riportato il contenuto del file manifesto
fss-dyn-claim.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: fss-dynamic-claim spec: accessModes: - ReadWriteMany storageClassName: "fss-dyn-storage" resources: requests: storage: 50Gi -
Verificare che il PVC sia stato associato al nuovo volume persistente.
$ 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 -
Utilizzare il nuovo PVC quando si creano oggetti come i baccelli.
Di seguito è riportato un esempio di creazione di oggetti.
$ kubectl create nginx.yamlDi seguito è riportato il contenuto del file
nginx.yaml. VedereclaimNamesull'ultima riga: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-claimVerificare che l'oggetto sia stato creato e distribuito:
$ kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 0 104s