Creazione di una memorizzazione persistente del file system mediante il plugin volume CSI
In Compute Cloud@Customer, puoi eseguire il provisioning di un PVC su un nuovo file system utilizzando il plugin del 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. Puoi avere 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 provisioning
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 storage è
fss-dyn-storage. -
È necessario specificare
mountTargetSubnetOcidomountTargetOcid. Il valoremountTargetSubnetOcidè l'OCID della subnet in cui si desidera che il plugin CSI crei una destinazione di accesso. Il valoremountTargetOcidè l'OCID di una destinazione di accesso esistente. Se si specificano siamountTargetSubnetOcidchemountTargetOcid, viene utilizzatomountTargetOcidemountTargetSubnetOcidviene 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 una subnet di worker (overlay del canale) o Creazione di una subnet di worker (VCN-Native Pod) o creare la destinazione di accesso nella subnet con configurazione simile alla 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 si specificamountTargetSubnetOcid). Il valore predefinito è lo stesso compartimento del cluster. -
È necessario specificare
AUTOSELECTcome valore perexportPath. -
Il valore
exportOptionsè 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 pod.
Di seguito è riportato un esempio di creazione di oggetti.
$ kubectl create nginx.yamlDi seguito è riportato il contenuto del file
nginx.yaml. Vedere ilclaimNamesull'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