Provisioning dei PVC nel servizio per volumi a blocchi
Scopri come eseguire il provisioning delle richieste di volume persistenti per i cluster creati utilizzando Kubernetes Engine (OKE) collegando i volumi dal servizio per volumi a blocchi.
- La nuova funzionalità viene aggiunta solo al plugin del volume CSI e non al plugin del volume FlexVolume (anche se gli sviluppatori Kubernetes continueranno a gestire il plugin del volume FlexVolume).
- Il plugin del volume CSI non richiede l'accesso alle dipendenze del sistema operativo e del file system root di base.
Il progetto Kubernetes a monte non è più valido per il plugin del volume FlexVolume in Kubernetes versione 1.23. La rimozione della funzione sarà conforme alle linee guida del criterio di non validità Kubernetes.
Si consiglia di eseguire la migrazione dei carichi di lavoro esistenti dal plugin volume FlexVolume al plugin volume CSI. Per istruzioni sulla migrazione, vedere Migrazione dal plugin del volume FlexVolume al plugin del volume CSI.
Il file StorageClass specificato per un PVC controlla quale plugin di volume utilizzare per connettersi ai volumi del servizio per volumi a blocchi. Per impostazione predefinita, vengono definite due classi di memorizzazione: oci-bv
per il plugin del volume CSI e oci
per il plugin FlexVolume. Se non si specifica in modo esplicito un valore per storageClassName
nel file yaml che definisce il PVC, viene utilizzata la classe di memorizzazione predefinita del cluster. La classe di storage predefinita del cluster viene inizialmente impostata in base alla versione di Kubernetes specificata al momento della creazione del cluster, come indicato di seguito.
- Nei cluster creati da Kubernetes Engine per eseguire Kubernetes versione 1.24 (o successiva), la classe di storage
oci-bv
viene inizialmente impostata come predefinita. La classe di memorizzazioneoci-bv
viene utilizzata dal plugin volume CSI. - Nei cluster creati da Kubernetes Engine per eseguire Kubernetes versione 1.23 (o precedente), la classe di storage
oci
viene inizialmente impostata come predefinita. La classe di memorizzazioneoci
viene utilizzata dal plugin volume FlexVolume.
Nei cluster creati originariamente da Kubernetes Engine per eseguire Kubernetes versione 1.23 (o precedente) e successivamente aggiornati a Kubernetes versione 1.24 (o successiva), la classe di storage predefinita non viene modificata durante il processo di aggiornamento. Pertanto, se la classe di memorizzazione predefinita era oci
prima dell'aggiornamento, la classe di memorizzazione predefinita continua a essere oci
dopo l'aggiornamento.
Se si desidera che oci-bv
anziché oci
sia la classe di storage predefinita di un cluster di cui è stato eseguito l'upgrade da Kubernetes versione 1.23 (o precedente) a Kubernetes versione 1.24 (o successiva), modificare la classe di storage predefinita come indicato di seguito.
- Specificare che
oci
non è la classe di memorizzazione predefinita immettendo:kubectl patch storageclass oci -p '{"metadata": {"annotations": {"storageclass.beta.kubernetes.io/is-default-class":"false"}}}'
- Specificare che
oci-bv
è la classe di memorizzazione predefinita immettendo:kubectl patch storageclass oci-bv -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class":"true"}}}'
Nel caso del plugin volume CSI, la funzione di topologia CSI garantisce che i nodi e i volumi di lavoro si trovino nello stesso dominio di disponibilità. Nel caso del plugin volume FlexVolume, è possibile utilizzare l'elemento matchLabels
per selezionare il dominio di disponibilità in cui viene eseguito il provisioning di una richiesta di volume persistente. Si noti che non si utilizza l'elemento matchLabels
con il plugin del volume CSI.
Indipendentemente dal plugin del volume che si sceglie di utilizzare, se un cluster si trova in un compartimento diverso rispetto ai relativi nodi di lavoro, è necessario creare un criterio aggiuntivo per abilitare l'accesso ai volumi del servizio per volumi a blocchi. Questa situazione si verifica quando la subnet specificata per un pool di nodi appartiene a un compartimento diverso del cluster. Per consentire ai nodi di lavoro di accedere ai volumi del servizio per volumi a blocchi, creare il criterio aggiuntivo con entrambe le istruzioni dei criteri riportate di seguito.
ALLOW any-user to manage volumes in TENANCY where request.principal.type = 'cluster'
ALLOW any-user to manage volume-attachments in TENANCY where request.principal.type = 'cluster'
Per specificare in modo esplicito il plugin del volume da utilizzare per connettersi al servizio Block Volume durante il provisioning di una richiesta di volume persistente, specificare un valore per storageClassName
nel file yaml che definisce il PVC:
- per utilizzare il plugin volume CSI, specificare
storageClassName: "oci-bv"
- per utilizzare il plugin volume FlexVolume, specificare
storageClassName: "oci"
Tenere presente quanto riportato di seguito.
- La quantità minima di storage persistente che un PVC può richiedere è di 50 gigabyte. Se la richiesta ha una durata inferiore a 50 gigabyte, la richiesta viene arrotondata fino a 50 gigabyte.
- Se si desidera aumentare la quantità di stoccaggio persistente che un PVC può richiedere, impostare
allowVolumeExpansion: true
nella definizione della classe di stoccaggio specificata per il PVC. Vedere Espansione di un volume a blocchi. - Quando crei un cluster, puoi facoltativamente definire le tag da applicare ai volumi a blocchi creati quando vengono definite le richieste di volume persistenti (PVC). L'applicazione di tag consente di raggruppare risorse eterogenee in vari compartimenti e di aggiungere annotazioni alle risorse con i propri metadati. Vedere Applicazione di tag ai volumi a blocchi.
- Dopo aver creato un PVC su un nuovo volume a blocchi utilizzando il plugin del volume CSI, è possibile visualizzare le statistiche di capacità per il volume a blocchi utilizzando uno strumento di aggregazione delle metriche (ad esempio Prometheus), tra cui:
kubelet_volume_stats_available_bytes
kubelet_volume_stats_capacity_bytes
kubelet_volume_stats_inodes
kubelet_volume_stats_inodes_free
kubelet_volume_stats_inodes_used
kubelet_volume_stats_used_bytes
Creazione di un PVC su un volume a blocchi mediante il plugin volume CSI
È possibile eseguire il provisioning dinamico di un volume a blocchi utilizzando il plugin CSI specificato dalla definizione della classe di memorizzazione oci-bv
(provisioner: blockvolume.csi.oraclecloud.com
). Ad esempio, se l'amministratore del cluster non ha creato alcun PV adatto corrispondente alla richiesta PVC.
È possibile definire un PVC in un file denominato csi-bvs-pvc.yaml. Ad esempio:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mynginxclaim
spec:
storageClassName: "oci-bv"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
Inserire il seguente comando per creare il PVC dal file csi-bvs-pvc.yaml:
kubectl create -f csi-bvs-pvc.yaml
L'uscita dal comando di cui sopra conferma la creazione del PVC:
persistentvolumeclaim "mynginxclaim" created
Verificare che il PVC sia stato creato eseguendo kubectl get pvc
:
kubectl get pvc
L'output del comando precedente mostra lo stato corrente del PVC:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
mynginxclaim Pending oci-bv 4m
Il PVC ha lo stato Pending
perché la definizione della classe di memorizzazione oci-bv
include volumeBindingMode: WaitForFirstConsumer
.
È possibile utilizzare questo PVC quando si creano altri oggetti, come i baccelli. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione di pod, che indica al sistema di utilizzare il PVC mynginxclaim come volume nginx, montato dal pod su /data.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: mynginxclaim
Dopo aver creato il nuovo pod, è possibile verificare che il PVC sia stato legato a un nuovo volume persistente inserendo:
kubectl get pvc
L'uscita dal comando di cui sopra conferma che il PVC è stato legato:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
mynginxclaim Bound ocid1.volume.oc1.iad.<unique_ID> 50Gi RWO oci-bv 4m
È possibile verificare che il pod stia utilizzando la nuova richiesta di volume persistente immettendo:
kubectl describe pod nginx
È possibile visualizzare le statistiche di capacità per il nuovo volume persistente utilizzando uno strumento di aggregazione delle metriche, ad esempio Prometheus.
Creazione di uno snapshot del volume da un backup del volume a blocchi mediante il plugin del volume CSI
Uno snapshot di un volume Kubernetes è uno snapshot di un volume persistente in un sistema di storage. È possibile utilizzare uno snapshot del volume per eseguire il provisioning di un nuovo volume persistente. Per ulteriori informazioni sugli snapshot dei volumi Kubernetes, consulta la sezione relativa agli snapshot dei volumi nella documentazione di Kubernetes.
Quando si utilizza il plugin del volume CSI per connettere i cluster ai volumi a blocchi nel servizio per volumi a blocchi, è possibile utilizzare i backup dei volumi a blocchi per eseguire il provisioning degli snapshot dei volumi Kubernetes. Puoi usare uno snapshot del volume per creare un nuovo volume a blocchi e preinserirlo con i dati del backup del volume a blocchi. Per ulteriori informazioni sui backup dei volumi a blocchi nel servizio per volumi a blocchi, vedere Panoramica dei backup dei volumi a blocchi.
È possibile utilizzare il plugin del volume CSI per eseguire il provisioning di uno snapshot del volume in uno dei due modi riportati di seguito.
- In modo dinamico: è possibile richiedere la creazione di un backup del volume a blocchi con provisioning di un volume persistente. La richiesta di volume persistente viene specificata utilizzando l'oggetto
VolumeSnapshot
e vengono specificati i parametri da utilizzare per creare il backup del volume a blocchi utilizzando l'oggettoVolumeSnapshotClass
. Gli snapshot del volume con provisioning dinamico vengono anche definiti snapshot del volume dinamico. Vedere Creazione di snapshot del volume con provisioning dinamico. - Staticamente: è possibile fornire i dettagli di un backup del volume a blocchi esistente utilizzando l'oggetto
VolumeSnapshotContent
. Gli snapshot di volume con provisioning statico vengono anche definiti snapshot di volume statici e snapshot di volume con provisioning preliminare. Creazione di snapshot di volumi con provisioning statico
Quando crei uno snapshot del volume con provisioning dinamico, le stesse tag in formato libero e le stesse tag definite applicate al volume a blocchi di origine vengono applicate al backup del volume a blocchi. Tuttavia, puoi utilizzare i parametri per applicare tag aggiuntive al backup del volume a blocchi (vedere Applicazione di tag ai backup dei volumi a blocchi).
Prima di creare snapshot del volume da utilizzare con i cluster creati da Kubernetes Engine, è necessario soddisfare una serie di prerequisiti. Vedere Prerequisiti per la creazione di snapshot del volume.
Tenere presente quanto riportato di seguito durante la creazione e l'uso degli snapshot dei volumi.
- È possibile creare snapshot di volumi solo quando si utilizza il plugin del volume CSI, ovvero non è possibile creare snapshot di volumi quando si utilizza il plugin del volume FlexVolume.
- Nel caso dei backup dinamici dei volumi, il plugin dei volumi CSI crea un nuovo backup dei volumi a blocchi per eseguire il provisioning di uno snapshot dei volumi dinamici nello stesso compartimento del cluster. Nel caso di snapshot di volumi statici, il backup del volume a blocchi che esegue il provisioning di uno snapshot del volume statico può trovarsi in un compartimento diverso dal cluster, a condizione che esistano istruzioni criteri appropriate per consentire al cluster di accedere a tale altro compartimento (vedere Prerequisiti per la creazione di snapshot del volume).
- Non è possibile utilizzare il plugin volume CSI per ripopolare un volume esistente con i dati. In altre parole, non è possibile ripristinare (ripristinare) i dati di un volume persistente esistente in uno stato precedente modificando lo snapshot del volume specificato nel manifesto della richiesta di volume persistente. È possibile utilizzare il plugin volume CSI solo per popolare un nuovo volume con i dati.
- Quando si crea un backup del volume a blocchi (ad esempio, quando si crea uno snapshot dinamico del volume), la chiave di cifratura utilizzata durante la creazione del volume a blocchi viene utilizzata anche per creare il backup del volume a blocchi. Non è possibile specificare una nuova chiave di cifratura quando si crea il backup di un volume a blocchi. Pertanto, il backup del volume a blocchi utilizza la stessa cifratura del volume a blocchi di cui esegue il backup.
- La dimensione specificata per un volume persistente di cui è stato eseguito il provisioning da uno snapshot del volume non deve essere inferiore alla dimensione del volume originale da cui è stato creato lo snapshot.
- Quando il plugin del volume CSI crea un nuovo volume a blocchi per il backup di un volume persistente di cui è stato eseguito il provisioning da uno snapshot del volume, il posizionamento del volume a blocchi dipende dai requisiti di topologia della richiesta di creazione del volume. Ad esempio, se il plugin del volume CSI crea un volume a blocchi per un pod che utilizza una richiesta di volume persistente, il volume a blocchi viene creato nello stesso dominio di disponibilità del nodo di lavoro su cui è in esecuzione il pod.
- Gli snapshot dello spazio di nomi incrociati non sono supportati.
- Con l'aumento del numero di oggetti
VolumeSnapshot
eVolumeSnapshotContent
in un cluster, possono consumare spazio significativo in etcd, il che potrebbe causare un funzionamento imprevisto del cluster. Per mantenere il cluster in buono stato, si consiglia di implementare un meccanismo di rimozione per eseguire regolarmente il cleanup degli oggettiVolumeSnapshot
eVolumeSnapshotContent
non più necessari.
Prerequisiti per la creazione degli snapshot dei volumi
Per creare snapshot dei volumi da utilizzare con i cluster creati da Kubernetes Engine:
- i nodi del piano di controllo del cluster devono eseguire Kubernetes versione 1.24 o successiva
- i nodi di lavoro del cluster devono utilizzare forme di computazione del processore basate su x86 o su Arm
- i nodi di lavoro del cluster devono essere in esecuzione Oracle Linux 7, Oracle Linux 8 o Ubuntu
Gli oggetti VolumeSnapshot
, VolumeSnapshotContent
e VolumeSnapshotClass
non fanno parte dell'API Kubernetes di base. Pertanto, prima di poter creare istantanee di volume utilizzando il plugin del volume CSI, è necessario installare i file CRD (Custom Resource Definition) necessari sul cluster, eseguendo i seguenti comandi:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/master/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/master/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/master/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
Se si desidera utilizzare uno snapshot del volume con provisioning statico per eseguire il provisioning di un nuovo volume persistente e il backup del volume a blocchi di base si trova in un compartimento diverso dal cluster, devono esistere istruzioni criteri appropriate per consentire al cluster di accedere ai backup dei volumi a blocchi in tale altro compartimento. Ad esempio:
ALLOW any-user to manage volume-backups in compartment <compartment-name> where request.principal.type = 'cluster'
ALLOW any-user to use volumes in compartment <compartment-name> where request.principal.type = 'cluster'
Creazione di snapshot del volume con provisioning dinamico
Per eseguire il provisioning dinamico di uno snapshot del volume creando un backup del volume a blocchi eseguendo il provisioning di una richiesta di volume persistente, è innanzitutto necessario definire un oggetto VolumeSnapshotClass
che specifichi il tipo di backup del volume a blocchi da creare. Dopo aver creato l'oggetto VolumeSnapshotClass
, definire un oggetto VolumeSnapshot
che utilizzi VolumeSnapshotClass
. L'oggetto VolumeSnapshot
viene utilizzato per specificare la richiesta di volume persistente di cui è stato eseguito il provisioning dal volume a blocchi di cui si desidera eseguire il backup.
Quando si crea uno snapshot di volume con provisioning dinamico, Kubernetes Engine crea un oggetto
VolumeSnapshotContent
. Non modificare gli oggetti VolumeSnapshotContent
creati da Kubernetes Engine né creare oggetti VolumeSnapshotContent
personalizzati quando si creano snapshot di volume con provisioning dinamico.Ad esempio, si definisce una richiesta di volume persistente denominata sample-pvc in un file denominato csi-mypvctobackup.yaml, di cui viene eseguito il provisioning da un volume a blocchi:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: sample-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: "oci-bv"
resources:
requests:
storage: 50Gi
Creare la richiesta di volume persistente:
kubectl create -f csi-mypvctobackup.yaml
È possibile utilizzare la richiesta di volume persistente quando si definiscono altri oggetti, ad esempio i pod. Ad esempio, la seguente definizione pod indica al sistema di utilizzare la richiesta di volume persistente sample-pvc come volume nginx, montato dal pod in /sample-volume.
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
spec:
containers:
- name: sample-nginx
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: sample-volume
volumes:
- name: sample-volume
persistentVolumeClaim:
claimName: sample-pvc
Dopo aver creato il nuovo pod, la richiesta di volume persistente viene associata a un nuovo volume persistente di cui è stato eseguito il provisioning da un volume a blocchi.
Per essere pronti a creare un backup del volume a blocchi che esegue il provisioning della richiesta di volume persistente, è necessario impostare i parametri per il backup del volume a blocchi definendo un oggetto VolumeSnapshotClass
denominato my-snapclass in un file denominato csi-mysnapshotclass.yaml:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: my-snapclass
driver: blockvolume.csi.oraclecloud.com
parameters:
backupType: full
deletionPolicy: Delete
Dove:
driver: blockvolume.csi.oraclecloud.com
specifica il plugin del volume CSI per il provisioning degli oggettiVolumeSnapshot
.parameters.backupType: full
specifica che il backup di un volume a blocchi deve includere tutte le modifiche apportate dopo la creazione del volume a blocchi. Specificareincremental
per creare un backup con solo le modifiche dall'ultimo backup. Si noti che ai fini del recupero dei dati non vi è alcuna differenza funzionale tra un backup incrementale e un backup completo. Vedere Tipi di backup dei volumi.deletionPolicy: Delete
specifica cosa accade al backup di un volume a blocchi se l'oggettoVolumeSnapshot
associato viene eliminato. SpecificareRetain
per conservare il backup di un volume a blocchi se l'oggettoVolumeSnapshot
associato viene eliminato.
Per impostazione predefinita, le stesse tag in formato libero e le stesse tag definite applicate al volume a blocchi di origine vengono applicate al backup del volume a blocchi. Tuttavia, puoi utilizzare i parametri per applicare tag aggiuntive al backup del volume a blocchi (vedere Applicazione di tag ai backup dei volumi a blocchi).
Creare l'oggetto VolumeSnapshotClass
:
kubectl create -f csi-mysnapshotclass.yaml
Per creare un backup del volume a blocchi che esegue il provisioning della richiesta di volume persistente, definire un oggetto VolumeSnapshot
come snapshot personale in un file denominato csi-mysnapshot.yaml:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-snapshot
namespace: default
spec:
volumeSnapshotClassName: my-snapclass
source:
persistentVolumeClaimName: sample-pvc
volumeSnapshotClassName: my-snapclass
specificamy-snapclass
come oggettoVolumeSnapshotClass
da cui ottenere i parametri da utilizzare durante la creazione del backup del volume a blocchi. Tenere presente che non è possibile modificarevolumeSnapshotClassName
dopo aver creato l'oggettoVolumeSnapshot
(è necessario creare un nuovo oggettoVolumeSnapshot
).persistentVolumeClaimName: sample-pvc
specificasample-pvc
come richiesta di volume persistente in base al volume a blocchi per il quale si desidera creare un backup del volume a blocchi. Tenere presente che non è possibile modificare l'origine dopo aver creato l'oggettoVolumeSnapshot
(è necessario creare un nuovo oggettoVolumeSnapshot
).
Creare l'oggetto VolumeSnapshot
:
kubectl create -f csi-mysnapshot.yaml
L'oggetto VolumeSnapshot
viene creato e sottoposto a provisioning mediante il backup di un nuovo volume a blocchi. È possibile utilizzare lo snapshot del volume per eseguire il provisioning di un nuovo volume persistente (vedere Utilizzo di uno snapshot del volume per il provisioning di un nuovo volume).
Creazione di snapshot di volumi con provisioning statico
Per eseguire il provisioning statico di uno snapshot del volume da un backup del volume a blocchi esistente, è innanzitutto necessario creare il backup del volume a blocchi (vedere Creazione di un backup manuale per un volume a blocchi ).
Dopo aver creato il backup del volume a blocchi, definire un oggetto VolumeSnapshotContent
e specificare i dettagli (incluso l'OCID) del backup del volume a blocchi esistente. È quindi possibile definire un oggetto VolumeSnapshot
e specificare l'oggetto VolumeSnapshotContent
che fornisce i dettagli del backup del volume a blocchi esistente.
Ad esempio, si definisce l'oggetto VolumeSnapshotContent
come contenuto-istantanea-personale in un file denominato csi-mystaticsnapshotcontent.yaml:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
name: my-static-snapshot-content
spec:
deletionPolicy: Retain
driver: blockvolume.csi.oraclecloud.com
source:
snapshotHandle: ocid1.volumebackup.oc1.iad.aaaaaa______xbd
volumeSnapshotRef:
name: my-static-snapshot
namespace: default
deletionPolicy: Retain
specifica cosa accade al backup di un volume a blocchi se l'oggettoVolumeSnapshot
associato viene eliminato. SpecificareDelete
per eliminare un backup del volume a blocchi se l'oggettoVolumeSnapshot
associato viene eliminato.driver: blockvolume.csi.oraclecloud.com
specifica di utilizzare il plugin del volume CSI per eseguire il provisioning degli oggettiVolumeSnapshot
.snapshotHandle: ocid1.volumebackup.oc1.iad.aaaaaa______xbd
specifica l'OCID del backup del volume a blocchi esistente.volumeSnapshotRef.name: my-static-snapshot
specifica il nome dell'oggettoVolumeSnapshot
corrispondente di cui eseguire il provisioning dal backup del volume a blocchi esistente. Questo campo è obbligatorio. Tenere presente che l'oggettoVolumeSnapshot
non deve esistere quando si crea l'oggettoVolumeSnapshotContent
.namespace: default
specifica lo spazio di nomi contenente l'oggettoVolumeSnapshot
corrispondente di cui eseguire il provisioning dal backup del volume a blocchi esistente. Questo campo è obbligatorio.
Creare l'oggetto VolumeSnapshotContent
:
kubectl create -f csi-mystaticsnapshotcontent.yaml
L'oggetto VolumeSnapshot
con provisioning statico viene definito come my-static-snapshot in un file denominato csi-mystaticsnapshot.yaml:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-static-snapshot
spec:
source:
volumeSnapshotContentName: my-static-snapshot-content
dove VolumeSnapshotContentName: my-static-snapshot-content
specifica il nome dell'oggetto VolumeSnapshotContent
creato in precedenza. Tenere presente che non è possibile modificare l'origine dopo aver creato l'oggetto VolumeSnapshot
(è necessario creare un nuovo oggetto VolumeSnapshot
).
Creare l'oggetto VolumeSnapshot
:
kubectl create -f csi-mystaticsnapshot.yaml
L'oggetto VolumeSnapshot
viene creato e sottoposto a provisioning dal backup del volume a blocchi specificato nell'oggetto VolumeSnapshotContent
. È possibile utilizzare lo snapshot del volume per eseguire il provisioning di un nuovo volume persistente (vedere Utilizzo di uno snapshot del volume per il provisioning di un nuovo volume).
Uso di uno snapshot del volume per eseguire il provisioning di un nuovo volume
Dopo aver creato uno snapshot del volume con provisioning dinamico o con provisioning statico, è possibile specificare lo snapshot del volume come origine dati per una richiesta di volume persistente di cui eseguire il provisioning di un nuovo volume persistente.
Ad esempio, si definisce una richiesta di volume persistente denominata pvc-fromsnapshot in un file denominato csi-mypvcfromsnapshot.yaml, di cui viene eseguito il provisioning mediante uno snapshot del volume denominato test-snapshot:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-fromsnapshot
namespace: default
spec:
storageClassName: oci-bv
dataSource:
name: test-snapshot
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
Dove:
datasource.name: test-snapshot
specifica l'istantanea di test come nome dell'oggettoVolumeSnapshot
da utilizzare come origine dati per il volume persistente.datasource.apiGroup: snapshot.storage.k8s.io
specifica la versione dell'API di storage degli snapshot Kubernetes da utilizzare.
Creare la richiesta di volume persistente:
kubectl create -f csi-mypvcfromsnapshot.yaml
Quando la richiesta di volume persistente viene utilizzata per eseguire il provisioning di un altro oggetto (ad esempio un pod), viene creato un volume persistente e l'oggetto VolumeSnapshot
specificato viene utilizzato per popolare il volume a blocchi sottostante. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione di pod che indica al sistema di utilizzare il PVC PVC-fromsnapshot come volume nginx, montato dal pod su /data.
apiVersion: v1
kind: Pod
metadata:
name: sample-pod-restore
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-fromsnapshot
Dopo aver creato il nuovo pod, la richiesta di volume persistente viene associata a un nuovo volume persistente di cui è stato eseguito il provisioning da un nuovo volume a blocchi popolato dall'oggetto VolumeSnapshot
.
Applicazione di tag ai backup dei volumi a blocchi
Quando si utilizza il plugin del volume CSI per creare uno snapshot del volume con provisioning dinamico, le stesse tag in formato libero e le stesse tag definite applicate al volume a blocchi di origine vengono applicate anche al backup del volume a blocchi.
Per applicare tag in formato libero aggiuntive al nuovo backup del volume a blocchi, includere il seguente parametro nella sezione dei parametri del file manifest VolumeSnapshotClass:
oci.oraclecloud.com/freeform-tags: '{"<first-tag-key>":","<first-tag-value>","<second-tag-key>":"<second-tag-value>"...}'
Per applicare tag definite aggiuntive al nuovo backup del volume a blocchi, includere il seguente parametro nella sezione dei parametri del file manifest VolumeSnapshotClass:
oci.oraclecloud.com/defined-tags: '{"<tag-namespace>": {"<first-tag-key>":","<first-tag-value>","<second-tag-key>":"<second-tag-value>"...}}'
Ad esempio:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: my-snapclass
driver: blockvolume.csi.oraclecloud.com
parameters:
backupType: full
oci.oraclecloud.com/freeform-tags: '{"<first-tag-key>":","<first-tag-value>","<second-tag-key>":"<second-tag-value>"...}'
deletionPolicy: Delete
Creazione di un PVC mediante la clonazione di un volume a blocchi esistente mediante il plugin del volume CSI
Una copia Kubernetes è un duplicato esatto di un volume persistente esistente in un sistema di storage. Puoi duplicare un volume persistente esistente per eseguire il provisioning di una nuova richiesta di volume persistente. Il nuovo volume persistente contiene una copia dei dati dal volume persistente di origine, ma è indipendente dal volume persistente di origine. Puoi utilizzare le copie dei volumi per eseguire rapidamente il test delle modifiche alla configurazione, senza alcun impatto su un ambiente di produzione. Per ulteriori informazioni sulle copie Kubernetes, consulta la sezione relativa alla copia dei volumi CSI nella documentazione di Kubernetes.
Nel servizio per volumi a blocchi, puoi duplicare un volume a blocchi per creare un nuovo volume a blocchi precompilato con i dati del volume a blocchi di origine. Per ulteriori informazioni sulla duplicazione dei volumi a blocchi nel servizio per volumi a blocchi, vedere Duplicazione di un volume a blocchi.
Quando si utilizza il plugin del volume CSI per connettere i cluster ai volumi a blocchi nel servizio per volumi a blocchi, è possibile eseguire il provisioning di un nuovo PVC con un nuovo volume a blocchi duplicato da un volume a blocchi esistente che esegue il provisioning di un altro PVC esistente. Per indicare che si desidera che il plugin del volume CSI duplichi il volume a blocchi esistente per il nuovo PVC, specificare il PVC esistente come origine dati per il nuovo PVC.
Il nuovo PVC può essere utilizzato allo stesso modo di qualsiasi altro PVC ed è completamente separato dal PVC esistente specificato come origine dati. Analogamente, il nuovo volume a blocchi e il volume a blocchi esistente da cui viene duplicato sono risorse completamente separate e possono essere aggiornati, duplicati, snapshot ed eliminati indipendentemente l'uno dall'altro.
Non appena il volume a blocchi di origine viene duplicato e viene creato un nuovo volume a blocchi (in genere entro pochi secondi), il nuovo volume a blocchi ha lo stato Disponibile. Tutti i dati presenti nel volume a blocchi di origine in quel momento vengono copiati nel nuovo volume a blocchi (non vengono copiate modifiche successive). Tuttavia, i dati vengono copiati in background, il che può richiedere fino a trenta minuti a seconda della dimensione del volume a blocchi (ad esempio, la copia di un volume a blocchi da 1 TB può richiedere fino a quindici minuti). Pertanto, per evitare la possibilità di errori o danneggiamento dei dati, il nuovo PVC ha uno stato di In sospeso fino a quando tutti i dati non sono stati copiati. Quando tutti i dati sono stati copiati, il nuovo PVC è legato al PV fornito dal nuovo volume a blocchi e il nuovo PVC ha uno stato Disponibile.
Prima di eseguire il provisioning di una nuova richiesta di volume persistente, è necessario soddisfare alcuni prerequisiti duplicando il volume a blocchi che già esegue il provisioning di una richiesta di volume persistente esistente. Vedere Prerequisiti per la duplicazione di un volume a blocchi esistente per il provisioning di un nuovo PVC.
Quando si duplica un volume a blocchi per eseguire il provisioning di un nuovo PVC, tenere presente quanto riportato di seguito.
- Il plugin del volume CSI crea il nuovo volume a blocchi nello stesso dominio di disponibilità, area e tenancy del volume a blocchi di origine.
- Il nuovo volume a blocchi creato dal plugin del volume CSI può essere duplicato non appena ha lo stato Disponibile.
- Tutti i requisiti di topologia in una richiesta di creazione del volume vengono ignorati. Ad esempio, se il plugin del volume CSI duplica un volume a blocchi per un pod che utilizza una richiesta di volume persistente, il nuovo volume a blocchi viene creato nello stesso dominio di disponibilità del nodo di lavoro su cui è in esecuzione il pod.
- Non è possibile utilizzare il plugin del volume CSI per duplicare i volumi a blocchi creati dal plugin del volume FlexVolume.
- Impossibile eliminare il PVC di origine mentre è in corso la duplicazione. Allo stesso modo, non puoi eliminare un volume a blocchi di origine mentre i dati vengono copiati in un volume a blocchi che è stato duplicato da esso.
- La duplicazione dello spazio di nomi incrociato non è supportata. Il nuovo PVC e il PVC di origine devono essere entrambi nello stesso spazio di nomi.
- Non è necessario specificare esplicitamente una classe di stoccaggio per il nuovo PVC. Se si specifica esplicitamente una classe di storage per il nuovo PVC, la classe di storage specificata può essere diversa dalla classe di storage specificata per il PVC di origine. Se non si specifica una classe di memorizzazione per il nuovo PVC, viene utilizzata la classe di memorizzazione predefinita.
Prerequisiti per la duplicazione di un volume a blocchi esistente per il provisioning di un nuovo PVC
Per eseguire il provisioning di una nuova richiesta di volume persistente mediante la duplicazione del volume a blocchi che sta già eseguendo il provisioning di una richiesta di volume persistente esistente, effettuare le operazioni riportate di seguito.
- I nodi del piano di controllo del cluster devono eseguire Kubernetes versione 1.25 o successiva.
- I nodi di lavoro del cluster devono utilizzare forme di computazione del processore basate su x86 o su Arm.
- I nodi di lavoro del cluster devono essere in esecuzione Oracle Linux 7, Oracle Linux 8 o Ubuntu.
- Il PVC esistente specificato come origine dati per il nuovo PVC deve:
- Essere già associati a un PV di cui è stato eseguito il provisioning da un volume a blocchi.
- Avere uno stato di Disponibile.
- Il nuovo volume a blocchi deve avere le stesse dimensioni o essere più grande del volume a blocchi di origine da cui è stato duplicato. Se si specifica un valore di storage per il nuovo PVC più grande del volume a blocchi di origine, il nuovo volume a blocchi viene ridimensionato di conseguenza. Non è possibile specificare un valore di storage per il nuovo PVC di dimensioni inferiori al volume a blocchi che si desidera duplicare o inferiori al valore di storage del PVC di origine.
- Il tipo di file system specificato per il nuovo volume a blocchi deve essere uguale al tipo di file system del volume a blocchi di origine da cui viene duplicato (vedere Specifica dei tipi di file system per i volumi a blocchi).
Clonazione di un volume a blocchi esistente per il provisioning di un nuovo PVC
Per eseguire il provisioning di una nuova richiesta di volume persistente mediante la duplicazione del volume a blocchi che sta già eseguendo il provisioning di una richiesta di volume persistente esistente, specificare la richiesta di volume persistente esistente come dataSource
della nuova richiesta di volume persistente.
Ad esempio, si definisce una richiesta di volume persistente denominata my-clone-pvc in un file denominato csi-myclonepvc.yaml. Il provisioning della richiesta di volume persistente my-clone-pvc viene eseguito da un volume a blocchi creato mediante la duplicazione del volume a blocchi in cui viene eseguito il provisioning della richiesta di volume persistente my-source-pvc:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-clone-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: custom-clone-storage-class
resources:
requests:
storage: 50Gi
dataSource:
kind: PersistentVolumeClaim
name: my-source-pvc
Creare la richiesta di volume persistente:
kubectl create -f csi-myclonepvc.yaml
È possibile utilizzare la richiesta di volume persistente quando si definiscono altri oggetti, ad esempio i pod. Ad esempio, la seguente definizione pod indica al sistema di utilizzare la richiesta di volume persistente my-clone-pvc come volume nginx, che viene montato dal pod in /sample-volume.
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
spec:
containers:
- name: sample-nginx
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: sample-volume
volumes:
- name: sample-volume
persistentVolumeClaim:
claimName: my-clone-pvc
Dopo aver creato il nuovo pod, la richiesta di volume persistente my-clone-pvc viene associata a un nuovo volume persistente di cui è stato eseguito il provisioning da un volume a blocchi che è stato duplicato dal volume a blocchi eseguendo il provisioning della richiesta di volume persistente my-source-pvc.
Applicazione di tag ai volumi a blocchi clonati
Quando si utilizza il plugin del volume CSI per eseguire il provisioning di un volume persistente duplicando un volume a blocchi eseguendo il provisioning di un'altra richiesta di volume persistente, al nuovo volume a blocchi vengono applicate anche le stesse tag in formato libero e le tag definite applicate al volume a blocchi di origine. Il plugin del volume CSI non applica tag aggiuntive al nuovo volume a blocchi.
Creazione di un PVC da un volume a blocchi o da un backup esistente mediante il plugin del volume FlexVolume
È possibile creare un PVC da un volume a blocchi esistente o da un backup del volume a blocchi per l'uso da parte del plugin volume FlexVolume. Ad esempio, se l'amministratore del cluster ha creato un backup del volume a blocchi da utilizzare durante il provisioning di una nuova richiesta di volume persistente. Un backup del volume a blocchi di questo tipo potrebbe essere fornito con dati pronti per l'uso da parte di altri oggetti, ad esempio i pod.
È possibile definire un PVC in un file denominato flex-pvcfrombackup.yaml. L'elemento annotazione volume.beta.kubernetes.io/oci-volume-source
consente di specificare l'origine del volume a blocchi da utilizzare durante il provisioning di una nuova richiesta di volume persistente mediante il plugin volume FlexVolume. Puoi specificare l'OCID di un volume a blocchi o di un backup del volume a blocchi come valore dell'annotazione. In questo esempio, si specifica l'OCID del backup del volume a blocchi creato dall'amministratore del cluster. Ad esempio:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myvolume
annotations:
volume.beta.kubernetes.io/oci-volume-source: ocid1.volumebackup.oc1.iad.abuw...
spec:
selector:
matchLabels:
topology.kubernetes.io/zone: US-ASHBURN-AD-1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
Si noti che il file flex-pvcfrombackup.yaml include l'elemento matchLabels
, applicabile solo nel caso del plugin volume FlexVolume.
Inserire il seguente comando per creare il PVC dal file flex-pvcfrombackup.yaml:
kubectl create -f flex-pvcfrombackup.yaml
L'uscita dal comando di cui sopra conferma la creazione del PVC:
persistentvolumeclaim "myvolume" created
Verificare che il PVC sia stato creato e associato a un nuovo volume persistente creato dal backup del volume immettendo:
kubectl get pvc
L'output del comando precedente mostra lo stato corrente del PVC:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
myvolume Bound ocid1.volume.oc1.iad.<unique_ID> 50Gi RWO oci 4m
È possibile utilizzare il nuovo volume persistente creato dal backup del volume quando si definiscono altri oggetti, ad esempio i pod. Ad esempio, la seguente definizione di pod indica al sistema di utilizzare il PVC myvolume come volume nginx, montato dal pod su /data.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: myvolume
Dopo aver creato il nuovo pod, è possibile verificare che sia in esecuzione e utilizzare la nuova richiesta di volume persistente immettendo:
kubectl describe pod nginx
Nell'esempio FlexVolume di questo argomento, il PVC richiede la memorizzazione in un dominio di disponibilità nell'area Ashburn utilizzando l'etichetta topology.kubernetes.io/zone
. Per ulteriori informazioni sull'uso di questa etichetta (e sulle versioni abbreviate dei nomi di dominio di disponibilità da specificare), vedere topology.kubernetes.io/zone.
Cifratura dei dati in archivio e dei dati in transito con il servizio per volumi a blocchi
Il servizio Oracle Cloud Infrastructure Block Volume cifra sempre tutti i volumi a blocchi e i backup dei volumi in archivio utilizzando l'algoritmo Advanced Encryption Standard (AES) con la cifratura a 256 bit. Per impostazione predefinita, tutti i volumi e i relativi backup vengono cifrati utilizzando le chiavi di cifratura fornite da Oracle. Ogni volta che un volume viene duplicato o ripristinato da un backup, al volume viene assegnata una nuova chiave di cifratura univoca.
Per ulteriori informazioni, vedere Gestione delle chiavi. È possibile cifrare tutti i volumi e i relativi backup utilizzando le chiavi di cui si è proprietari e che si gestiscono utilizzando il servizio Vault. Se non si configura un volume per l'uso del servizio Vault o se in seguito si rimuove l'assegnazione di una chiave dal volume, il servizio per volumi a blocchi utilizza invece la chiave di cifratura fornita da Oracle. Ciò si applica sia alla cifratura in archivio che alla cifratura in transito pseudo-virtualizzata.
Tutti i dati che passano dall'istanza al volume a blocchi vengono trasferiti tramite una rete interna estremamente sicura. In caso di requisiti specifici correlati alla cifratura dei dati durante lo spostamento tra l'istanza e il volume a blocchi, il servizio per volumi a blocchi offre la possibilità di abilitare la cifratura in transito per i collegamenti di volumi pseudo-irtualizzati nelle istanze di virtual machine (VM). Alcune forme Bare Metal supportano la cifratura in transito per i volumi a blocchi collegati a iSCSI dell'istanza.
Per ulteriori informazioni sulla cifratura dei volumi a blocchi e sul supporto della cifratura in transito, vedere Cifratura dei volumi a blocchi.
Quando i PVC Kubernetes sono supportati dal servizio per volumi a blocchi, puoi scegliere la modalità di cifratura dei volumi a blocchi specificando:
- Chiave di cifratura master da utilizzare impostando la proprietà
kms-key-id
nella definizione della classe di storage Kubernetes. È possibile specificare l'OCID di una chiave di cifratura master nel servizio Vault. - Modalità di collegamento del volume a blocchi all'istanza di computazione impostando la proprietà
attachment-type
nella definizione della classe di storage Kubernetes suiscsi
oparavirtualized
. - Indica se la cifratura in transito è abilitata per ogni pool di nodi in un cluster impostando la proprietà
isPvEncryptionInTransitEnabled
del pool di nodi (utilizzando l'interfaccia CLI, l'API o l'opzione Usa cifratura in transito del pool di nodi nella console).
L'interazione delle impostazioni specificate determina la modalità di cifratura dei volumi a blocchi, come illustrato nella tabella.
Proprietà pool di nodi isPvEncryptionInTransitEnabled impostata su: |
Proprietà class kms-key-id di memorizzazione impostata su: |
Proprietà della classe di memorizzazione attachment-type impostata su |
I dati sono cifrati in archivio? | I dati sono cifrati in transito? | Note |
---|---|---|---|---|---|
true |
OCID di una chiave nel vault | paravirtualized |
Sì (chiave gestita dall'utente) | Sì (chiave gestita dall'utente) | |
true |
OCID di una chiave nel vault | iscsi |
Errore | Errore | Impossibile eseguire il provisioning del PV perché la proprietà attachment-type deve essere impostata su paravirtualized quando isPvEncryptionInTransitEnabled è impostato su True . |
true |
non impostato | paravirtualized |
Sì (chiave gestita da Oracle) | Sì (chiave gestita da Oracle) | |
true |
non impostato | iscsi |
Errore | Errore | Impossibile eseguire il provisioning del PV perché la proprietà attachment-type deve essere impostata su paravirtualized quando isPvEncryptionInTransitEnabled è impostato su True . |
false |
OCID di una chiave nel vault | paravirtualized |
Sì (chiave gestita dall'utente) | No | |
false |
OCID di una chiave nel vault | iscsi |
Sì (chiave gestita dall'utente) | No | |
false |
non impostato | paravirtualized |
Sì (chiave gestita da Oracle) | No | |
false |
non impostato | iscsi |
Sì (chiave gestita da Oracle) | No |
Prima di poter creare un cluster per il quale si desidera gestire la chiave di cifratura master, è necessario:
- Creare una chiave di cifratura master appropriata nel vault (o ottenere l'OCID di tale chiave). Vedere Gestione delle chiavi.
- Creare un criterio che conceda l'accesso alla chiave di cifratura principale. Vedere Create Policy to Access User-Managed Encryption Keys for Encrypting Boot Volumes, Block Volumes, and/or File Systems.
Per ulteriori informazioni sulla rotazione delle chiavi nel servizio Vault, vedere Rotating a Vault Key.
Esempio: configurazione di una classe di storage per abilitare la cifratura in archivio e in transito mediante la chiave predefinita gestita da Oracle
Per eseguire il provisioning di un PVC su un volume a blocchi, utilizzando una chiave di cifratura master gestita da Oracle per cifrare i dati in archivio (e facoltativamente in transito), definire una classe di storage e impostare:
- Da
provisioner:
ablockvolume.csi.oraclecloud.com
-
Da
attachment-type
aparavirtualized
Ad esempio:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: bv-encrypted-storage-class
provisioner: blockvolume.csi.oraclecloud.com
parameters:
attachment-type: "paravirtualized"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
È quindi possibile creare un PVC fornito dalla classe di storage creata.
Dopo aver definito la classe di storage e creato il PVC, impostare la proprietà isPvEncryptionInTransitEnabled
di ogni pool di nodi su true
(utilizzando l'interfaccia CLI, l'API o l'opzione Usa cifratura in transito del pool di nodi nella console). Tenere presente che la cifratura dei dati in transito è supportata solo in alcune situazioni (vedere Cifratura dei dati in archivio e dei dati in transito con il servizio per volumi a blocchi).
Esempio: configurazione di una classe di storage per abilitare la cifratura in archivio e in transito mediante una chiave gestita dall'utente
Per eseguire il provisioning di un PVC su un volume a blocchi, utilizzando una chiave di cifratura master gestita dall'utente per cifrare i dati in archivio (e facoltativamente in transito), è necessario:
- Creare una chiave di cifratura master appropriata nel vault (o ottenere l'OCID di tale chiave). Vedere Gestione delle chiavi.
- Creare un criterio che conceda l'accesso alla chiave di cifratura principale. Vedere Create Policy to Access User-Managed Encryption Keys for Encrypting Boot Volumes, Block Volumes, and/or File Systems.
Dopo aver creato una chiave e un criterio di cifratura master appropriati, definire una classe di memorizzazione e impostare:
- Da
provisioner:
ablockvolume.csi.oraclecloud.com
- Da
attachment-type
aparavirtualized
kms-key-id
all'OCID della chiave di cifratura master nel servizio Vault che si desidera utilizzare per cifrare i dati
Ad esempio:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: bv-user-encrypted-storage-class
provisioner: blockvolume.csi.oraclecloud.com
parameters:
attachment-type: "paravirtualized"
kms-key-id: "ocid1.key.oc1.iad.anntl______usjh"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
È quindi possibile creare un PVC fornito dalla classe di storage creata.
Dopo aver definito la classe di storage e creato il PVC, impostare la proprietà isPvEncryptionInTransitEnabled
di ogni pool di nodi su true
(utilizzando l'interfaccia CLI, l'API o l'opzione Usa cifratura in transito del pool di nodi nella console). Tenere presente che la cifratura dei dati in transito è supportata solo in alcune situazioni (vedere Cifratura dei dati in archivio e dei dati in transito con il servizio per volumi a blocchi).
Espansione di un volume a blocchi
Quando viene creato un PVC utilizzando il plugin volume CSI (provisioner: blockvolume.csi.oraclecloud.com
), è possibile espandere la dimensione del volume online. In questo modo, è possibile distribuire inizialmente applicazioni con una certa quantità di storage e successivamente aumentare lo storage disponibile senza tempi di inattività.
Se si desidera supportare gli aumenti della richiesta di memorizzazione, impostare allowVolumeExpansion: true
nella definizione della classe di memorizzazione specificata per il PVC. Ad esempio:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-bv
provisioner: blockvolume.csi.oraclecloud.com
parameters:
attachment-type: "paravirtualized"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Per impostazione predefinita, la classe di memorizzazione oci-bv
predefinita per il plugin del volume CSI è allowVolumeExpansion: true
.
Per espandere le dimensioni di un volume, modificare il manifesto in PVC e aggiornare le dimensioni del volume, quindi applicare il manifesto. Quando il disco viene sottoposto a nuova scansione per consentire al sistema operativo di identificare la dimensione del volume espanso (che può richiedere alcuni minuti), l'aumento dello storage diventa automaticamente disponibile per i pod che utilizzano il PVC. Non è necessario riavviare i pod.
Immettere il comando seguente per confermare che il PVC è stato associato a un volume a blocchi appena ingrandito:
kubectl get pvc <pvc_name> -o yaml
Tenere presente quanto riportato di seguito.
- L'espansione dei volumi è supportata nei cluster su cui è in esecuzione Kubernetes 1.19 o versione successiva.
- La classe di storage
oci-bv
predefinita per il plugin del volume CSI è configurata conallowVolumeExpansion: true
nei cluster su cui è in esecuzione Kubernetes 1.19 o versione successiva. Le definizioni delle classi di memorizzazioneoci-bv
nei cluster esistenti che eseguono Kubernetes 1.19 o versioni successive vengono modificate automaticamente per impostareallowVolumeExpansion: true
. - Non è possibile ridurre le dimensioni di un volume a blocchi. È possibile specificare solo un valore più grande della dimensione corrente del volume a blocchi. Se si aggiorna un file manifesto in PVC per richiedere meno spazio di archiviazione rispetto a quanto richiesto in precedenza, la richiesta di archiviazione non riesce.
- Per ulteriori informazioni sull'aumento delle dimensioni dei volumi a blocchi nel servizio per volumi a blocchi, vedere Ridimensionamento di un volume. In particolare, tenere presente il suggerimento di creare un backup prima di ridimensionare un volume a blocchi.
Esempio: configurazione di una classe di storage per abilitare l'espansione del volume a blocchi
Modificare il file manifesto di un PVC fornito dalla classe di memorizzazione oci-bv
e includere una richiesta di archiviazione. Ad esempio, è possibile impostare inizialmente storage: 100Gi
per richiedere 100 GB di storage per il PVC, in un file denominato csi-bvs-PVC-exp.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: oci-bv
resources:
requests:
storage: 100Gi
volumeName: pvc-bv1
Immettere il comando seguente per creare il PVC dal file csi-bvs-PVC-exp.yaml:
kubectl apply -f csi-bvs-pvc-exp.yaml
Successivamente, potrebbe essere necessario aumentare la quantità di stoccaggio disponibile per il PVC. Ad esempio, è possibile modificare il file manifesto e impostare storage: 200Gi
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: oci-bv
resources:
requests:
storage: 200Gi
volumeName: pvc-bv1
Dopo aver applicato il manifesto, il PV che prevede il PVC viene aumentato a 200 GB. L'aggiornamento del manifesto attiva il servizio per volumi a blocchi per aumentare la dimensione del volume a blocchi esistente a 200 GB. Quando il disco viene sottoposto a nuova scansione (che può richiedere alcuni minuti), l'aumento dello storage diventa automaticamente disponibile per i baccelli che utilizzano il PVC.
Specifica delle prestazioni del volume a blocchi
I volumi a blocchi nel servizio per volumi a blocchi possono essere configurati per diversi livelli di prestazioni, in base ai requisiti di I/O del carico di lavoro previsti. Le prestazioni del volume a blocchi sono espresse in VPU (volume performance units). Sono disponibili diversi livelli di prestazioni, tra cui:
- Costo inferiore (0 VPU)
- Bilanciato (10 VPU)
- Prestazioni più elevate (20 VPU)
- Ultra High Performance (tra 30 VPU e 120 VPU)
Per impostazione predefinita, i volumi a blocchi vengono configurati per il livello di prestazioni bilanciato (10 VPU). Per ulteriori informazioni sui diversi livelli di prestazioni dei volumi a blocchi, vedere Livelli di prestazioni dei volumi a blocchi.
Quando si definisce un PVC utilizzando il plugin volume CSI (provisioner: blockvolume.csi.oraclecloud.com
), è possibile specificare un livello di prestazioni del volume a blocchi diverso nella definizione della classe di storage appropriato per il carico di lavoro previsto.
Tenere presente che non è possibile modificare successivamente il livello di prestazioni di un volume a blocchi che supporta un PVC. È invece necessario definire una nuova classe di storage, impostare il livello di prestazioni in base alle esigenze e creare un nuovo PVC fornito dalla nuova classe di storage.
Creazione di PVC con livelli di prestazioni inferiori (0 VPU), bilanciati (10 VPU) e con prestazioni superiori (20 VPU)
Per creare un PVC supportato da un volume a blocchi con un livello di prestazioni Costo inferiore, Bilanciato o Prestazioni superiori, impostare vpusPerGB
nella definizione della classe di storage come indicato di seguito.
- per un livello di prestazioni Costo inferiore, impostare
vpusPerGB: "0"
- per un livello di prestazioni Bilanciato, impostare
vpusPerGB: "10"
- per un livello di prestazioni Prestazioni superiori, impostare
vpusPerGB: "20"
Ad esempio:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: oci-high
provisioner: blockvolume.csi.oraclecloud.com
parameters:
vpusPerGB: "20"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Il valore di vpusPerGB
deve essere "0", "10" o "20". Altri valori non sono supportati.
Creare un file manifesto per un PVC di cui è stato eseguito il provisioning dalla classe di memorizzazione oci-high
e includere una richiesta di archiviazione. Ad esempio, in un file denominato csi-bvs-pvc-perf.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: oci-pvc-high
spec:
storageClassName: oci-high
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Immettere il comando seguente per creare il PVC dal file csi-bvs-PVC-perf.yaml:
kubectl apply -f csi-bvs-pvc-perf.yaml
Dopo aver creato il PVC, è possibile utilizzarlo quando si creano altri oggetti, come i baccelli. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione di pod, che indica al sistema di utilizzare il PVC oci-pvc-high
:
apiVersion: v1
kind: Pod
metadata:
name: pod-high
spec:
containers:
- name: app
image: busybox:latest
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
volumeMounts:
- name: persistent-storage
mountPath: /data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: oci-pvc-high
Quando crei il pod, nel servizio per volumi a blocchi viene creato un nuovo volume a blocchi per il supporto del PVC. Il nuovo volume a blocchi ha il livello di prestazioni specificato nella definizione della classe di storage oci-high
.
Creazione di PVC con livelli di prestazioni ultra elevate (da 30 a 120 VPU)
Per creare un PVC supportato da un volume a blocchi con un livello Ultra High Performance, è necessario completare una serie di passi. I passaggi sono descritti in dettaglio in questa sezione, ma in sintesi, è necessario:
- Creare un pool di nodi con nodi di lavoro di una forma supportata.
- Se si collega un volume a blocchi alle istanze di computazione come collegamento iSCSI, installare e abilitare il plugin Gestione volumi a blocchi nelle istanze che ospitano i nodi di lavoro.
- Creare una definizione di classe di memorizzazione e impostare
vpusPerGB
nella definizione di classe di memorizzazione su un valore compreso tra 30 e 120. - Creare un PVC fornito dalla classe di stoccaggio e includere una richiesta di stoccaggio.
Dopo aver creato un PVC adatto, è possibile definire un pod che utilizza un volume a blocchi Ultra High Performance e pianificare il pod in un nodo che supporta i volumi a blocchi Ultra High Performance.
Per offrire caratteristiche Ultra High Performance, i volumi a blocchi Ultra High Performance devono essere collegati alle istanze di computazione che ospitano nodi di lavoro utilizzando un collegamento abilitato per più percorsi. Tuttavia, solo il primo volume a blocchi Ultra High Performance collegato a un'istanza viene collegato con un collegamento abilitato per multipath. Di conseguenza, solo il primo volume a blocchi Ultra High Performance collegato a un'istanza presenta caratteristiche Ultra High Performance.
Se si intende utilizzare più volumi a blocchi Ultra High Performance in un cluster, creare lo stesso numero di nodi che supportano i volumi a blocchi Ultra High Performance di quelli Ultra High Performance.
Per creare un PVC supportato da un volume a blocchi con un livello Ultra High Performance:
- Seguire le istruzioni per creare un pool di nodi (vedere Creazione di un pool di nodi gestiti) e specificare quanto riportato di seguito.
- Specificare una forma Bare Metal (BM) o Virtual Machine (VM) supportata da Kubernetes Engine e che supporti anche il livello Ultra High Performance.
Tenere presente che i volumi a blocchi Ultra High Performance richiedono forme che supportano collegamenti abilitati per multipath. Tenere inoltre presente che se si desidera collegare il volume a blocchi alle istanze di computazione che ospitano nodi di lavoro nel pool di nodi come collegamento pseudo-virtualizzato, VM.Standard.E4. La forma flessibile è l'unica forma supportata.
Vedere:
- Forme supportate per nodi gestiti e nodi virtuali per le forme supportate da Kubernetes Engine
- Dettagli prestazioni per forme di istanza per le forme che supportano il livello Ultra High Performance.
- Specificare un'etichetta da aggiungere a tutti i nodi di lavoro nel pool di nodi per indicare che i nodi di lavoro supportano il livello Ultra High Performance. Ad esempio,
uhp: supported
- Specificare una forma Bare Metal (BM) o Virtual Machine (VM) supportata da Kubernetes Engine e che supporti anche il livello Ultra High Performance.
- Se si desidera collegare un volume a blocchi Ultra High Performance alle istanze di computazione che ospitano i nodi di lavoro nel pool di nodi come collegamento iSCSI, installare e abilitare il plugin Gestione volumi a blocchi nelle istanze.
Esistono diversi modi per installare e abilitare il plugin Gestione volumi a blocchi, ad esempio utilizzando la console o l'interfaccia CLI. In alternativa, è possibile installare e abilitare il plugin Gestione volumi a blocchi specificando uno script di inizializzazione cloud personalizzato simile al seguente:
#!/bin/bash curl --fail -H "Authorization: Bearer Oracle" -L0 http://169.254.169.254/opc/v2/instance/metadata/oke_init_script | base64 --decode >/var/run/oke-init.sh bash /var/run/oke-init.sh echo "Installing oci cli package" sudo yum install -y python36-oci-cli echo "Completed oci cli package" instance_id=$(curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/id) echo "Instance Id : $instance_id" echo "Updating compute instance agent config." oci compute instance update --instance-id $instance_id --force --agent-config '{ "is-agent-disabled": false, "plugins-config": [ {"name": "Block Volume Management", "desiredState": "ENABLED" } ] }' --auth instance_principal echo "Update completed for instance agent config."
Durante l'installazione e l'abilitazione del plugin Gestione volumi a blocchi, tenere presente quanto riportato di seguito.
- Il plugin Gestione volumi a blocchi deve essere in grado di connettersi ai servizi Oracle perché l'istanza di computazione dispone di un indirizzo IP pubblico o perché la VCN dispone di un gateway di servizi.
- Le autorizzazioni devono essere configurate per consentire al plugin Gestione volumi a blocchi di segnalare i risultati dell'impostazione iSCSI per i collegamenti iSCSI abilitati per multipath.
Ulteriori informazioni
- Informazioni sul plugin Gestione volume a blocchi, vedere Abilitazione del plugin Gestione volume a blocchi.
- Informazioni sulla scrittura di script cloud-init personalizzati, vedere Utilizzo di script di inizializzazione cloud-init personalizzati per l'impostazione dei nodi gestiti.
- Creare una definizione di classe di storage per i volumi a blocchi con un livello di prestazioni Ultra High Performance e impostare
vpusPerGB
nella definizione della classe di storage su un valore compreso tra 30 e 120.Ad esempio:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: oci-uhp-sc provisioner: blockvolume.csi.oraclecloud.com parameters: vpusPerGB: "30" attachment-type: "iscsi" reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
-
Creare un PVC fornito dalla classe di storage appena creata e includere una richiesta di storage, come indicato di seguito.
-
Creare un manifesto per il PVC.
Ad esempio, in un file denominato csi-bvs-pvc-uhp.yaml:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: uhp-claim spec: storageClassName: "oci-uhp-sc" accessModes: - ReadWriteOnce resources: requests: storage: 50Gi
- Creare il PVC dal file manifesto.
Ad esempio, immettendo:
kubectl apply -f csi-bvs-pvc-uhp.yaml
-
Dopo aver creato il PVC, è possibile utilizzarlo quando si creano altri oggetti, come i baccelli. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione pod:
apiVersion: v1
kind: Pod
metadata:
name: pod-uhp
labels:
uhp-pod: "true"
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: uhp-pod
operator: In
values:
- "true"
topologyKey: kubernetes.io/hostname
containers:
- name: app
image: iad.ocir.io/odx-oke/oke-public/busybox:latest
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
volumeMounts:
- name: persistent-storage
mountPath: /data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: uhp-claim
nodeSelector:
uhp: supported
In questo esempio è stato specificato:
- Etichetta per il pod per indicare che utilizza un volume a blocchi Ultra High Performance. In questo esempio,
uhp-pod: "true"
- Regola anti-affinità che utilizza l'etichetta pod per garantire l'esecuzione di un solo pod utilizzando il volume a blocchi Ultra High Performance su un singolo nodo di lavoro.
- Selettore di nodi, in modo che il pod venga eseguito solo sui nodi di lavoro con una determinata etichetta (derivata dall'etichetta del pool di nodi). In questo esempio,
uhp: supported
- Un PVC supportato da un volume a blocchi Ultra High Performance. In questo esempio,
claimName: uhp-claim
Quando si crea un pod in base alla definizione, il pod viene eseguito su un nodo di lavoro ospitato in un'istanza con una forma adatta al livello di prestazioni Ultra High Performance. Nel servizio per volumi a blocchi viene creato un nuovo volume a blocchi per il supporto del PVC. Il nuovo volume a blocchi ha il livello di prestazioni Ultra High Performance specificato nella definizione della classe di storage.
Specifica dei tipi di file system per i volumi a blocchi
I volumi a blocchi nel servizio per volumi a blocchi possono essere configurati per diversi tipi di file system. Il file system più appropriato da utilizzare dipende, tra le altre cose, dalla dimensione prevista del file e dal numero di file da elaborare. Sono disponibili diversi tipi di file system, tra cui:
- ext3: il tipo di file system ext3 include funzionalità di journaling per migliorare l'affidabilità e la disponibilità. I controlli di coerenza dopo un'interruzione dell'alimentazione o un arresto incontrollato del sistema non sono necessari.
- ext4: oltre alle funzioni ext3, il tipo di file system ext4 supporta estensioni (blocchi fisici contigui), preallocazione, allocazione ritardata, controllo più rapido del file system, journaling più affidabile e altri miglioramenti.
- XFS: il file system XFS è un tipo di file system di journaling ad alte prestazioni che garantisce un'elevata scalabilità per i thread I/O, la larghezza di banda del file system, la dimensione dei file e dei file system, anche quando il file system si estende su molti dispositivi di memorizzazione.
I file system ext3 e ext4 sono in genere considerati più adatti per le applicazioni che utilizzano un singolo thread di lettura/scrittura e file di piccole dimensioni. Mentre, il file system XFS è generalmente considerato più adatto per le applicazioni che hanno più thread di lettura/scrittura e file più grandi.
Quando un PVC viene creato utilizzando il plugin volume CSI (provisioner: blockvolume.csi.oraclecloud.com
), è possibile specificare un tipo di file system per il volume a blocchi appropriato per il carico di lavoro previsto.
Per impostazione predefinita, i volumi a blocchi vengono configurati con un file system ext4. Se un file system ext4 è appropriato per il carico di lavoro previsto, non è necessario specificare in modo esplicito il tipo di file system nella definizione della classe di storage come descritto nel resto di questo argomento.
Per impostazione predefinita, i volumi a blocchi vengono configurati con un file system ext4. Se il file system ext4 non è il file system più appropriato per il carico di lavoro previsto, è possibile specificare un tipo di file system alternativo nella definizione della classe di storage.
Per creare un PVC supportato da un volume a blocchi con un file system ext3 o XFS, impostare il parametro fstype
nella definizione della classe di memorizzazione personalizzata come indicato di seguito.
- per ext3, impostare
csi.storage.k8s.io/fstype: ext3
- per XFS, impostare
csi.storage.k8s.io/fstype: xfs
Ad esempio, per creare un PVC supportato da un volume a blocchi con un file system ext3:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: oci-bv-ext3
provisioner: blockvolume.csi.oraclecloud.com
parameters:
csi.storage.k8s.io/fstype: ext3
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: WaitForConsumer
Creare un file manifesto per un PVC di cui è stato eseguito il provisioning dalla classe di memorizzazione oci-bv-ext3
e includere una richiesta di archiviazione. Ad esempio, in un file denominato csi-bvs-pvc-fstype.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: oci-bv-claim-ext3
spec:
storageClassName: oci-bv-ext3
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
Immettere il comando seguente per creare il PVC dal file csi-bvs-PVC-fstype.yaml:
kubectl apply -f csi-bvs-pvc-fstype.yaml
Dopo aver creato il PVC, è possibile utilizzarlo quando si creano altri oggetti, come i baccelli. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione di pod, che indica al sistema di utilizzare il PVC oci-bv-claim-ext3 come volume nginx, montato dal pod su /data.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- name: http
containerPort: 80
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: oci-bv-claim-ext3
Dopo aver creato il nuovo pod, è possibile verificare che il PVC sia stato legato a un nuovo volume persistente inserendo:
kubectl get pvc
L'uscita dal comando di cui sopra conferma che il PVC è stato legato:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
oci-bv-claim-ext3 Bound ocid1.volume.oc1.iad.<unique_ID> 50Gi RWO oci-bv-ext3 4m
È possibile verificare che il pod stia utilizzando la nuova richiesta di volume persistente immettendo:
kubectl describe pod nginx
Tenere presente che in seguito non è possibile modificare il file system di un volume a blocchi che supporta un PVC. È invece necessario definire una nuova classe di storage, impostare il file system in base alle esigenze e creare un nuovo PVC fornito dalla nuova classe di storage.
Specifica dei volumi a blocchi raw
Quando si utilizza il plugin del volume CSI ( provisioner: blockvolume.csi.oraclecloud.com
) per connettere i cluster ai volumi a blocchi nel servizio per volumi a blocchi, è possibile associare un PVC a un PV di cui viene eseguito il provisioning da un volume a blocchi configurato come volume a blocchi raw. Quando un volume a blocchi è stato configurato come volume a blocchi raw, anziché come file system di cui è stato eseguito il MOUNT, un PV di cui è stato eseguito il provisioning da tale volume a blocchi viene visualizzato come dispositivo a blocchi per i contenitori in esecuzione su un cluster. Di conseguenza, le applicazioni in esecuzione all'interno del contenitore possono accedere al volume a blocchi collegato come dispositivo a blocchi, senza il sovraccarico delle prestazioni causato dall'accesso al dispositivo tramite un file system. Tale sovraccarico può essere particolarmente significativo per le applicazioni sensibili alle prestazioni (come i database) che beneficiano dell'accesso diretto ai dispositivi a blocchi.
Per configurare il volume a blocchi che supporta un PVC come volume a blocchi raw, specificare volumeMode: Block
nel file manifesto del PVC. Tenere presente che, se non specificato, si suppone che il valore volumeMode: Filesystem
e i volumi a blocchi siano configurati con un file system ext4 per impostazione predefinita.
oci-bv
, includere una richiesta di memorizzazione e specificare volumeMode: Block
nel file manifesto. Ad esempio, in un file denominato csi-bvs-pvc-raw.yaml:apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-raw-block-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: oci-bv
volumeMode: Block
Immettere il comando seguente per creare il PVC dal file csi-bvs-PVC-raw.yaml:
kubectl apply -f csi-bvs-pvc-raw.yaml
Dopo aver creato il PVC, è possibile utilizzarlo quando si creano altri oggetti, come i baccelli. Ad esempio, è possibile creare un nuovo pod dalla seguente definizione di pod, che indica al sistema di utilizzare il PVC PVC-raw-block-volume come volume di storage per il contenitore raw-volume-test, al quale il contenitore può accedere all'indirizzo /dev/block:
apiVersion: v1
kind: Pod
metadata:
name: raw-volume-test-pod
spec:
containers:
- name: raw-volume-test
image: centos
command: ["/bin/sh"]
volumeDevices:
- name: raw-volume
devicePath: /dev/block
volumes:
- name: raw-volume
persistentVolumeClaim:
claimName: pvc-raw-block-volume
Dopo aver creato il nuovo pod, è possibile verificare che il PVC sia stato legato a un nuovo volume persistente inserendo:
kubectl get pvc
L'uscita dal comando di cui sopra conferma che il PVC è stato legato:
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
pvc-raw-block-volume Bound ocid1.volume.oc1.iad.<unique_ID> 50Gi RWO oci-bv 4m
È possibile verificare che il pod stia utilizzando la nuova richiesta di volume persistente immettendo:
kubectl describe pod raw-volume-test-pod
Tenere presente che in seguito non è possibile modificare se il volume a blocchi che supporta un PVC è configurato come volume a blocchi raw o come file system attivato. Invece, devi creare un nuovo PVC e impostare volumeMode:
in modo appropriato nel manifesto in PVC.
Si noti che i volumi a blocchi raw non sono supportati per i volumi a blocchi a elevate prestazioni.
Impostazione del volume a blocchi raw accessModes su ReadWriteOnce o ReadWriteMany
Quando si desidera che un volume a blocchi raw venga montato esclusivamente da un singolo pod in un determinato momento (ad esempio, quando l'accesso simultaneo allo stesso volume da parte di più pod potrebbe causare il danneggiamento o incoerenze dei dati), impostare accessModes
come ReadWriteOnce
nel file manifesto PVC. La modalità ReadWriteOnce
è la modalità di accesso più comune e predefinita.
Quando si desidera che un volume a blocchi raw sia accessibile da più pod contemporaneamente (ad esempio, quando più pod in esecuzione su nodi diversi richiedono l'accesso concorrente allo stesso storage condiviso), impostare accessModes
come ReadWriteMany
nel file manifesto PVC. Tenere presente che è responsabilità dell'utente predisporre controlli e autorizzazioni di accesso appropriati per garantire l'integrità dei dati quando si specifica ReadWriteMany
come modalità di accesso.
Tenere presente quanto riportato di seguito.
- Impossibile aggiornare la modalità di accesso di un PVC esistente da
ReadWriteOnce
aReadWriteMany
. Analogamente, non è possibile aggiornare la modalità di accesso di un PVC esistente daReadWriteMany
aReadWriteOnce
. - È possibile specificare solo
ReadWriteMany
come modalità di accesso per i PVC supportati da volumi a blocchi raw.