Archiviazione

Questa pagina spiega i concetti relativi ai cluster Anthos su VMware (GKE On-Prem).

Riepilogo

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

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

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 provisioning per i dati etcd.

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

I datastore vSphere utilizzati dal cluster di amministrazione e dai cluster utente possono essere supportati da NFS, vSAN o VMFS su un dispositivo a blocchi, ad esempio un array di archiviazione esterno. In un ambiente con più host, ogni dispositivo a blocchi deve essere collegato a tutti gli host nell'ambiente e il datastore deve essere configurato su ogni host tramite l'opzione Monta Datastore su host aggiuntivi.

Spazio di archiviazione predefinito

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

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

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

Interfaccia Container Storage

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

Per utilizzare la crittografia lato client nel cluster, devi eseguire il deployment del driver CSI fornito dal fornitore di spazio di archiviazione. Quindi, puoi configurare i carichi di lavoro per utilizzare la classe di archiviazione del driver o impostarla come Classe di archiviazione 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 idonei.

Driver CSI vSphere

Per impostazione predefinita, i cluster Anthos su VMware sfruttano il plug-in del volume all'interno dell'albero di VMware, vSphere Cloud Provider (VCP), che consente automaticamente il supporto per i datastore VMware, incluso vSAN. Il driver CSI vSphere è l'implementazione del driver vSphere del volume 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 creare un'espansione online mentre il volume è in uso da un pod oppure un'espansione offline in cui il 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, installato automaticamente nei cluster utente, imposta allowVolumeExpansion su true per impostazione predefinita per i cluster appena creati in esecuzione su >= vSphere 7.0. Puoi utilizzare l'espansione online e offline dei volumi tramite questo oggetto StorageClass. Per un cluster di cui è stato eseguito l'upgrade, poiché i valori StorageClass non vengono modificati negli upgrade del cluster, quando viene eseguito l'upgrade di un cluster da 1.7 a 1.8, l'impostazione allowVolumeExpansion in standard-rwo non viene impostata, il che significa che l'espansione del volume non è consentita.

Per maggiori informazioni sull'espansione del volume, consulta Utilizzo dell'espansione del volume.

Snapshot CSI Volume

Puoi creare snapshot di archiviazione permanente utilizzando le risorse VolumeSnapshot e VolumeSnapshotClass. Per utilizzare 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 maggiori informazioni sugli snapshot dei volumi, consulta Utilizzo degli snapshot dei volumi.

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 release successiva.

Pulizia del volume

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

Plug-in di volume all'interno di Kubernetes

Kubernetes viene fornito con una serie di plug-in di volume nella struttura ad albero. Hai la possibilità di utilizzare uno qualsiasi di questi sistemi per fornire archiviazione a blocchi o di file per i carichi di lavoro stateful. I plug-in in-albero 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 all'interno dell'albero non supportano il provisioning dinamico. Richiedono la creazione manuale di oggetti PersistentVolume.

Nella tabella seguente vengono descritti diversi plug-in di volume all'interno dell'albero:

Plug-in di volume all'interno dell'alberoDescrizioneModalità di accesso supportateProvisioning dinamico
Fibre ChannelPlug-in di archiviazione genericoLettura/scrittura di un singolo podNo
iSCSIPlug-in di archiviazione genericoLettura/scrittura di un singolo podNo
NFSPlug-in di archiviazione genericoLettura/scrittura di più podNo

Configurazione dello storage per il 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 StorageClass come valore predefinito del cluster o configurare i carichi di lavoro utilizzando StorageClass (esempio StatefulSet).

Risolvere i problemi

Consulta Risoluzione dei problemi di archiviazione.

Per approfondire