Archiviazione

Questo argomento illustra i concetti di archiviazione di GKE On-Prem.

Riepilogo

GKE On-Prem si integra con blocchi esterni o sistemi di archiviazione di file tramite archiviazione vSphere di VMware, plug-in di volume "in-tree" di Kubernetes (o "driver"") e driver di Container Storage Interface (CSI).

I cluster GKE On-Prem 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 GKE On-Prem 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, GKE On-Prem 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 GKE On-Prem includono un StorageClass Kubernetes predefinito, 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.

In GKE On-Prem, 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.

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
Cf. RBDArchiviazione software open sourceLettura/scrittura di un singolo pod
CephFSArchiviazione software open sourceLettura/scrittura di più podNo
PortworxSpazio di archiviazione definito dal software proprietarioLettura/scrittura di più pod
QuobyteSpazio di archiviazione definito dal software proprietarioLettura/scrittura di un singolo pod
ArchiviazioneSpazio di archiviazione definito dal software proprietarioLettura/scrittura di un singolo pod

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 GKE On-Prem, i carichi di lavoro possono connettersi direttamente a un dispositivo di archiviazione compatibile senza dover passare attraverso l'archiviazione vSphere.

GKE On-Prem supporta CSI v1.0. 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.

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