Questa pagina spiega come aggiungere un disco permanente al cluster utilizzando la modalità di accesso ReadOnlyMany. Questa modalità consente a più pod su nodi diversi di montare il disco per la lettura.
Per ulteriori informazioni su questa modalità, consulta Modalità di accesso ai volumi permanenti.
Requisiti
- Il cluster deve eseguire GKE versione 1.22 o successive.
- Il cluster deve utilizzare il driver CSI per il disco permanente di Compute Engine.
Formatta e compila un disco permanente di origine
Per utilizzare un disco permanente in modalità di sola lettura, devi compilare un disco permanente di origine con i dati, quindi clonare il volume o utilizzare uno snapshot del volume per spostare i dati in un nuovo PersistentVolume ReadOnlyMany.
Crea un PersistentVolume utilizzando un Persistent Disk esistente o il provisioning dinamico.
Formatta il disco e compilalo con i dati. Per formattare il disco, fai riferimento al disco come PersistentVolume ReadWriteOnce in un pod. GKE formatta automaticamente il disco sottostante e consente al pod di scrivere dati sul disco. All'avvio del pod, assicurati che scriva i dati che vuoi sul disco.
Crea un PersistentVolume ReadOnlyMany
Puoi creare un PersistentVolume ReadOnlyMany utilizzando uno dei seguenti metodi:
- Uno snapshot del volume di un PersistentVolume di origine che viene compilato con i dati.
- Un clone del volume di un PersistentVolume di origine che compili con i dati.
Un disco permanente preesistente già compilato con dati.
Snapshot volume
Crea uno snapshot del volume del PersistentVolume di origine.
Salva il seguente manifest PersistentVolumeClaim come
snapshot-pvc.yaml:kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: dataSource: apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: SNAPSHOT_NAME accessModes: - ReadOnlyMany storageClassName: premium-rwo resources: requests: storage: STORAGE_SIZESostituisci quanto segue:
PVC_NAMESPACE: lo spazio dei nomi del nuovo PersistentVolumeClaim.PVC_NAME: il nome del nuovo PersistentVolumeClaim.SNAPSHOT_NAME:il nome dell'oggettoVolumeSnapshot.STORAGE_SIZE: la quantità di spazio di archiviazione da richiedere. Deve corrispondere all'importo richiesto nell'oggetto PersistentVolumeClaim di origine.
Applica il manifest al tuo cluster:
kubectl apply -f snapshot-pvc.yaml
In questo modo, nel cluster viene creato un nuovo PersistentVolumeClaim denominato PVC_NAME, che GKE utilizza per eseguire il provisioning dinamico di un nuovo PersistentVolume contenente i dati dello snapshot del disco permanente di origine.
Clonazione del volume
Prima di utilizzare la clonazione del volume, assicurati di conoscere le limitazioni di questo approccio.
Salva il seguente manifest come
cloning-pvc.yaml:kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: dataSource: name: SOURCE_PVC kind: PersistentVolumeClaim accessModes: - ReadOnlyMany storageClassName: STORAGE_CLASS_NAME resources: requests: storage: STORAGE_SIZESostituisci quanto segue:
PVC_NAMESPACE: lo spazio dei nomi del nuovo PersistentVolumeClaim.PVC_NAME: il nome del nuovo PersistentVolumeClaim.SOURCE_PVC: il nome del PersistentVolumeClaim di origine compilato con i dati.STORAGE_CLASS_NAME: la classe di archiviazione per il nuovo PersistentVolumeClaim. Deve corrispondere alla classe di archiviazione del PersistentVolumeClaim di origine.STORAGE_SIZE: la quantità di spazio di archiviazione per il nuovo PersistentVolumeClaim. Deve essere lo stesso importo richiesto da PersistentVolumeClaim di origine.
Applica il manifest al tuo cluster:
kubectl apply -f cloning-pvc.yaml
Viene creato un PersistentVolumeClaim denominato
PVC_NAME che GKE
utilizza per creare un nuovo PersistentVolume in modalità ReadOnlyMany con i dati
nel PersistentVolume di origine.
Per informazioni più dettagliate sul cloning dei volumi, vedi Crea cloni di volumi permanenti.
Disco permanente preesistente
Salva il seguente manifest come
preexisting-disk-pv-pvc.yaml:apiVersion: v1 kind: PersistentVolume metadata: name: PV_NAME spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: DISK_SIZE accessModes: - ReadOnlyMany claimRef: namespace: PVC_NAMESPACE name: PVC_NAME csi: driver: pd.csi.storage.gke.io volumeHandle: DISK_ID fsType: FS_TYPE readOnly: true --- apiVersion: v1 kind: PersistentVolumeClaim metadata: namespace: PVC_NAMESPACE name: PVC_NAME spec: storageClassName: "STORAGE_CLASS_NAME" volumeName: PV_NAME accessModes: - ReadOnlyMany resources: requests: storage: DISK_SIZESostituisci quanto segue:
PV_NAME: il nome del nuovo PersistentVolume.STORAGE_CLASS_NAME: il nome della nuova StorageClass.DISK_SIZE: le dimensioni del disco permanente preesistente. Ad esempio,500G.PVC_NAMESPACE: lo spazio dei nomi del nuovo PersistentVolumeClaim.PVC_NAME: il nome della nuova PersistentVolumeClaim.DISK_ID: l'identificatore del disco permanente preesistente. Il formato èprojects/{project_id}/zones/{zone_name}/disks/{disk_name}per i Persistent Disk a livello di zona oprojects/{project_id}/regions/{region_name}/disks/{disk_name}per i Persistent Disk a livello di regione.FS_TYPE: il tipo di file system. Puoi lasciare il valore predefinito (ext4) o utilizzarexfs. Se i tuoi cluster utilizzano un pool di nodi Windows Server, devi modificarlo inNTFS.
Applica il manifest al tuo cluster:
kubectl apply -f preexisting-disk-pv-pvc.yaml
Viene creato un PersistentVolumeClaim denominato PVC_NAME e un PersistentVolume denominato PV_NAME in modalità ReadOnlyMany.
Per informazioni più dettagliate sull'utilizzo di un disco permanente preesistente, consulta disco permanente esistente.
Utilizza PersistentVolumeClaim in un pod
Ora puoi fare riferimento al nuovo PersistentVolumeClaim in modalità di sola lettura in più pod su più nodi contemporaneamente. Non puoi collegare dischi permanenti in modalità ReadWriteOnce a più nodi contemporaneamente. Per saperne di più, consulta Deployment e StatefulSet.
Nella specifica del pod, devi specificare readOnly: true nelle sezioni
volumeMounts e volumes, come nel seguente
esempio:
apiVersion: apps/v1
kind: Deployment
metadata:
name: multi-read
labels:
app: web-server
spec:
replicas: 3
selector:
matchLabels:
app: web-server
template:
metadata:
labels:
app: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /test-mnt
name: my-volume
readOnly: true
volumes:
- name: my-volume
persistentVolumeClaim:
claimName: PVC_NAME
readOnly: true
Passaggi successivi
- Scopri di più sui volumi permanenti e sul provisioning di GKE.
- Scopri come utilizzare il driver CSI per il disco permanente di Compute Engine.
- Scopri come utilizzare Persistent Disk preesistenti come PersistentVolume.
- Scopri come utilizzare gli snapshot dei volumi.
- Scopri come creare cloni di volumi permanenti.