GKE On-Prem si integra con i sistemi di archiviazione esterna a blocchi o di file tramite l'archiviazione VMv vSphere, i plug-in di volume in- Kubernetes e i driver Container Storage Interface (CSI).
Spazio di archiviazione vSphere
Per impostazione predefinita, sia gli amministratori GKE On-Prem sia i cluster utente utilizzano l'archiviazione vSphere. Il cluster di amministrazione richiede un datastore VMware 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 di un nuovo disco della macchina virtuale (VMDK) nello stesso datastore VMware utilizzato dal cluster di amministrazione. Questo VMDK contiene i dati di etcd del cluster utente.
Il valore predefinito di StorageClass per un cluster utente rimanda a un datastore VMware. Per impostazione predefinita, i oggetti PersistentVolume di Kubernetes di cui è stato eseguito il provisioning per il cluster utente sono VMDK utilizzati dal datastore. Non è necessariamente lo stesso datastore utilizzato dal cluster di amministrazione.
I datastore VMware utilizzati dall'amministratore e dai cluster utente 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.
In GKE On-Prem, gli StatefulSet utilizzano PersistentVolumeClaim supportati da StorageClass che rimandano all'archiviazione vSphere.
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-albero | Descrizione | Modalità di accesso supportate | Provisioning dinamico |
---|---|---|---|
Fibre Channel | Plug-in generico per lo spazio di archiviazione | Lettura/scrittura di un singolo pod | No |
iSCSI | Plug-in generico per lo spazio di archiviazione | Lettura/scrittura di un singolo pod | No |
NFS | Plug-in generico per lo spazio di archiviazione | Lettura/scrittura di più pod | No |
Cf. RBD | Archiviazione software open source | Lettura/scrittura di un singolo pod | Sì |
CephFS | Archiviazione software open source | Lettura/scrittura di più pod | No |
Portworx | Spazio di archiviazione definito dal software proprietario | Lettura/scrittura di più pod | Sì |
Quobyte | Spazio di archiviazione definito dal software proprietario | Lettura/scrittura di un singolo pod | Sì |
Archiviazione | Spazio di archiviazione definito dal software proprietario | Lettura/scrittura di un singolo pod | Sì |
Container Storage Interface
Container Storage Interface (CSI) è un'API standard che consente a Kubernetes di esporre sistemi di archiviazione arbitrarii ai carichi di lavoro containerizzati. Quando esegui il deployment di un driver del volume compatibile con CSI in un cluster Kubernetes, i carichi di lavoro possono connettersi direttamente allo spazio di archiviazione senza dover passare attraverso l'archiviazione vSphere.
GKE On-Prem viene fornito con Kubernetes 1.13+, che 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.
Risolvere i problemi
Consulta Risoluzione dei problemi relativi allo spazio di archiviazione.