Archiviazione

Questa pagina illustra i concetti relativi ai cluster Anthos su VMware (GKE on-prem).

Riepilogo

I cluster Anthos su VMware si integrano con sistemi di archiviazione esterna a blocchi o di file tramite l'archiviazione vSphere di VMware, i plug-in di volume in- Kubernetes (o driver) e i driver di Container Storage Interface (CSI).

I cluster Anthos su VMware utilizzano un oggetto StorageClass predefinito di Kubernetes per eseguire il provisioning dell'archiviazione per carichi di lavoro stateful in un datastore vSphere. Puoi anche utilizzare un oggetto StorageClass per il provisioning di diversi volumi di archiviazione.

Spazio di archiviazione vSphere

Per impostazione predefinita, i cluster Anthos su VMware utilizzano l'archiviazione vSphere. Il cluster di amministrazione richiede un datastore vSphere di cui è stato eseguito il pre-provisioning per i dati etcd.

Quando crei un cluster utente, Cluster Anthos su VMware utilizza il plug-in del volume vSphere Kubernetes per eseguire il provisioning dinamico dei nuovi dischi delle macchine virtuali (VMDK) in un datastore vSphere. Tieni presente che nella versione precedente del 1.2, i cluster utente utilizzavano lo stesso datastore dei cluster di amministrazione.

I datastore vSphere utilizzati dal cluster di amministrazione e dagli utenti possono essere supportati da NFS, vSAN o VMFS su un dispositivo di blocco, ad esempio un array di archiviazione esterno. In un ambiente multi-host, ogni dispositivo di blocco deve essere collegato a tutti gli host dell'ambiente e il datastore deve essere configurato su ogni host tramite l'opzione Mount Datastore on Host Hosts.

Spazio di archiviazione predefinito

I cluster Anthos su VMware includono un oggetto StorageClass predefinito di Kubernetes, che determina il modo in cui Kubernetes deve eseguire il provisioning dell'archiviazione. Dopo il provisioning, i volumi di archiviazione di Kubernetes sono rappresentati dai volumi PersistentVolume di Kubernetes.

Il valore predefinito di StorageClass per un cluster utente rimanda a un datastore vSphere, impostato nel campo datastore della configurazione di StorageClass. Per impostazione predefinita, i PersistentVolume di Kubernetes di cui è stato eseguito il provisioning per il cluster utente sono VMDK del datastore. Non è necessariamente lo stesso datastore utilizzato dal cluster di amministrazione.

Nei cluster Anthos su VMware, gli oggetti StatefulSet di Kubernetes (carichi di lavoro stateful che in genere richiedono l'archiviazione permanente) utilizzano PersistentVolumeClaim supportati da StorageClass che rimandano all'archiviazione vSphere per impostazione predefinita.

Container Storage Interface

Container Storage Interface (CSI) è un'API standard aperta che consente a Kubernetes di esporre sistemi di archiviazione arbitrarii ai carichi di lavoro containerizzati. Quando esegui il deployment di un driver di volume compatibile con CSI in un cluster Anthos sul cluster VMware, i carichi di lavoro possono connettersi direttamente a un dispositivo di archiviazione compatibile senza dover passare attraverso l'archiviazione vSphere.

Per utilizzare CSI nel cluster, devi eseguire il deployment del driver CSI fornito dal tuo fornitore di spazio di archiviazione. Quindi, puoi configurare i carichi di lavoro in modo da utilizzare la classe StorageClass del driver, oppure impostarla come StorageClass predefinita.

Abbiamo collaborato con molti fornitori di spazio di archiviazione per qualificare i loro sistemi di archiviazione con i cluster Anthos su VMware. Consulta l'elenco completo dei partner di archiviazione qualificati.

Driver CSI vSphere

Per impostazione predefinita, Cluster Anthos su VMware sfrutta il plug-in di volume interno alla VMvSphere Cloud Provider (VCP), che abilita automaticamente il supporto per i datastore VMware, incluso vSAN. Il driver CSI vSphere è l'implementazione del driver del volume vSphere di Container Storage Interface ed è un componente di VMware Cloud Native Storage. Viene eseguito automaticamente il deployment nei cluster Anthos su VMware ed è generalmente disponibile a partire dai cluster Anthos su VMware versione 1.7.

Espansione del volume

L'espansione del volume è una funzionalità beta di Kubernetes 1.20.

Puoi espandere le dimensioni di un volume permanente dopo che ne è stato eseguito il provisioning modificando la richiesta di capacità in PersistentVolumeClaim (PVC). Puoi eseguire un'espansione online mentre il volume è utilizzato da un pod oppure da un'espansione offline con un volume non in uso.

Per il driver CSI vSphere, l'espansione offline è disponibile nelle versioni vSphere >= 7.0, mentre l'espansione online è disponibile nelle versioni vSphere >= 7.0 Update 2.

Il driver vSphere CSI StorageClass standard-rwo, che viene installato automaticamente nei cluster utente, imposta allowVolumeExpansion su true per impostazione predefinita per i nuovi cluster creati in esecuzione su >= vSphere 7.0. Puoi utilizzare l'espansione online e offline per i volumi usando questo oggetto StorageClass. Per un cluster di cui è stato eseguito l'upgrade, poiché StorageClass non viene modificato negli upgrade del cluster, quando viene eseguito l'upgrade di un cluster da 1,7 a 1,8, l'impostazione allowVolumeExpansion in standard-rwo rimane non configurata, il che significa che l'espansione del volume non è consentita.

Per ulteriori informazioni sull'espansione del volume, consulta la sezione Utilizzare l'espansione del volume.

Snapshot volume CSI

Puoi creare snapshot di archiviazione permanente utilizzando le risorse VolumeSnapshot e VolumeSnapshotClass. Per usare questa funzionalità su un volume CSI, il driver CSI deve supportare gli snapshot del volume e il container collaterale external-snapshotter deve essere incluso nel deployment del driver CSI.

Per ulteriori informazioni sugli snapshot del volume, consulta Utilizzo degli snapshot del volume.

Il deployment dei controller degli snapshot CSI viene eseguito automaticamente quando crei un cluster.

A partire dai cluster Anthos su VMware 1.8, sono disponibili v1 versioni di oggetti VolumeSnapshot, VolumeSnapshotContent e VolumeSnapshotClass. Le versioni v1beta1 sono deprecate e non verranno più pubblicate a partire da una versione successiva.

Pulizia del volume

Quando elimini un cluster utente, i volumi di cui è stato eseguito il provisioning dal plug-in di volume interno ad VMware potrebbero non essere eliminati. Tuttavia, quando si elimina un cluster utente, i volumi di cui è stato eseguito il provisioning dal driver CSI vSphere non vengono eliminati. Prima di eliminare il cluster, verifica che tutti i volumi, le PVC e gli StatefulSet siano eliminati.

Plug-in di volume "In-albero" di Kubernetes

Kubernetes viene fornito con una serie di plug-in di volume tra gli alberi. Hai la possibilità di utilizzare una qualsiasi di queste opzioni per fornire spazio di archiviazione a blocchi o di file per i tuoi carichi di lavoro stateful. I plug-in interni consentono ai carichi di lavoro di connettersi direttamente allo spazio di archiviazione senza dover passare attraverso l'archiviazione vSphere.

Mentre l'archiviazione vSphere fornisce automaticamente il provisioning dinamico dei volumi all'interno di un datastore supportato da qualsiasi dispositivo di archiviazione iSCSI, FC o NFS, molti dei plug-in interni non supportano il provisioning dinamico. Richiedono la creazione manuale di oggetti PersistentVolume.

La tabella riportata di seguito descrive diversi plug-in di volume all'interno dell'albero:

Plug-in di volume in-alberoDescrizioneModalità di accesso supportateProvisioning dinamico
Fibre ChannelPlug-in generico per lo spazio di archiviazioneLettura/scrittura di un singolo podNo
iSCSIPlug-in generico per lo spazio di archiviazioneLettura/scrittura di un singolo podNo
NFSPlug-in generico per lo spazio di archiviazioneLettura/scrittura di più podNo

Configurazione dello spazio di archiviazione del cluster

Se vuoi eseguire il provisioning di volumi di archiviazione diversi dai datastore vSphere, puoi creare un nuovo oggetto StorageClass in un cluster che utilizza un driver di archiviazione diverso. Quindi, puoi impostare la classe di archiviazione come predefinita del cluster o configurare i tuoi carichi di lavoro utilizzando l'oggetto StorageClass (esempio di StatefulSet).

Risolvere i problemi

Consulta Risoluzione dei problemi relativi allo spazio di archiviazione.

Per approfondire