Questa pagina illustra i concetti di archiviazione di Google Distributed Cloud (solo software) per i concetti di archiviazione di VMware.
Riepilogo
Google Distributed Cloud si integra con l'archiviazione esterna di file o blocchi sistemi attraverso:
- Il driver vSphere Container Storage Interface (CSI)
- Driver CSI di terze parti
- Plug-in di volume in-tree di Kubernetes
Datastore vSphere
Quando crei un cluster di amministrazione, specifichi una risorsa vSphere esistente datastore per i dati etcd del cluster.
Quando crei un cluster utente, puoi utilizzare lo stesso datastore dell'amministratore o specificare un datastore diverso. Puoi anche specificare e datastore per singoli pool di nodi.
I datastore vSphere utilizzati dai cluster di amministrazione e utente possono essere supportati da NFS, vSAN o VMFS su un dispositivo a blocchi, ad esempio un array di archiviazione esterno. In un in un ambiente multi-host, ogni dispositivo a blocchi deve essere collegato a tutti gli host l'ambiente e il datastore deve essere configurato su ciascun host tramite Montare Datastore su host aggiuntivi .
StorageClasses
Quando crei un PersistentVolumeClaim, puoi specificare un oggetto StorageClass che fornisce informazioni sul modo verrà eseguito il provisioning. Se non specifichi un valore di StorageClass, il valore predefinito StorageClass.
StorageClass del cluster di amministrazione
Nei cluster di amministrazione, c'è un oggetto StorageClass denominato standard
e
è designato come StorageClass predefinito. Gli elenchi StorageClass di standard
il plug-in del volume "in-tree" vSphere come provisioner.
Per visualizzare il valore di StorageClass standard
:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get storageclass \ standard --output yaml
Nell'output, puoi vedere che standard
è il valore predefinito di StorageClass e
il provisioner è il plug-in del volume "in-tree", vSphere,
kubernetes.io/vsphere-volume
. Puoi anche vedere il nome di una risorsa vSphere
datastore.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... labels: bundle.gke.io/component-name: admin-storage-class name: standard ... parameters: datastore: vsanDatastore provisioner: kubernetes.io/vsphere-volume ...
StorageClass del cluster utente
Nei cluster utente è presente un oggetto StorageClass denominato standard
e un altro
oggetto StorageClass denominato standard-rwo
.
Il valore di StorageClass standard-rwo
è designato come predefinito, mentre
il driver CSI vSphere viene elencato come provisioner.
Per visualizzare il valore di StorageClass standard-rwo
:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclass \ standard-rwo --output yaml
Nell'output, puoi vedere che standard-rwo
è il valore predefinito di StorageClass e
il provisioner è il driver CSI vSphere, csi.vsphere.vmware.com
. Puoi
vedi anche l'URL di un datastore vSphere:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" ... labels: bundle.gke.io/component-name: user-vsphere-csi-driver-addon ... name: standard-rwo ... parameters: datastoreURL: ds:///vmfs/volumes/vsan:52fb6ca22be2454e-e67f620175964a9f/ provisioner: csi.vsphere.vmware.com ...
Plug-in di volume in-tree di Kubernetes
Kubernetes include una serie plug-in del volume "in-tree". Tuttavia, la maggior parte di questi plug-in "integrati" del volume sono deprecati (inclusi il plug-in del volume in-tree vSphere), per ulteriori informazioni, consulta Migrazione CSI progetto.
Migrazione CSI per il driver di archiviazione vSphere
In passato, plug-in di volume vSphere in-tree era il provisioner per l'oggetto StorageClass predefinito nei cluster utente. Ma ora il plug-in del volume vSphere integrato in un albero è deprecato e il driver CSI vSphere è il provisioner per il valore predefinito di StorageClass nei cluster utente. I nostri suggerimenti è necessario utilizzare il driver CSI vSphere al posto del plug-in di volume "in-tree".
A partire dalla versione 1.15 di Google Distributed Cloud, il modulo CSI di Kubernetes la funzionalità di migrazione è abilitata per impostazione predefinita per il plug-in del volume vSphere integrato. Ciò significa che se un carico di lavoro utilizza un volume vSphere in-tree, tutte le risorse interne le chiamate alle operazioni di archiviazione vengono reindirizzate automaticamente al driver CSI vSphere.
Ad esempio, supponiamo che un oggetto PersistentVolumeClaim specifichi standard
StorageClass, che elenca il plug-in del volume "in-tree" vSphere,
kubernetes.io/vsphere-volume
, come provisioner. Quindi qualsiasi carico di lavoro che utilizza
che le chiamate delle operazioni di archiviazione
di PersistentVolumeClaim saranno reindirizzate
il driver CSI vSphere, csi.vsphere.vmware.com
.
Controlli preflight
Quando crei un nuovo cluster o esegui l'upgrade di un cluster, sono disponibili verifica che il tuo ambiente sia adatto alla migrazione CSI.
Ad esempio, i controlli preflight:
- Verifica che le versioni vCenter ed ESXI siano appropriate.
- Verifica che il driver CSI vSphere sia abilitato se sono presenti vSphere in-tree PersistentVolumes.
- Verifica che le StorageClass di vSphere non abbiano determinati parametri corrispondenti ignorato dopo la migrazione CSI.
- Verifica le annotazioni su oggetti PersistentVolume creati in modo statico e Gli oggetti PersistentVolumeClaim sono richiesti per la migrazione di CSI.
- Verifica che il cluster possa eseguire correttamente un carico di lavoro utilizzando un volume CSI di cui è stato eseguito il provisioning dal driver CSI vSphere.
Per ulteriori informazioni, vedi Esecuzione dei controlli preflight.
Problemi noti
Esistono diversi problemi noti relativi al driver CSI vSphere. Per informazioni e soluzioni, consulta la sezione Problemi noti Note di rilascio del driver 3.0 di VMWare vSphere CSI.
Completa la migrazione a CSI
Con la funzionalità di migrazione Kubernetes CSI abilitata per impostazione predefinita nella versione 1.15,
PersistentVolume
supportato dal plug-in del volume vSphere integrato
funzionando in un ambiente solo CSI, si limita a eseguire il reindirizzamento dei plug-in in-tree
al plug-in CSI. Poiché la specifica PersistentVolume
è immutabile,
la specifica sarà la stessa del plug-in del volume "In-tree".
Per questo motivo, l'intero set di funzionalità CSI, come l'espansione del volume e il volume, Le funzionalità di snapshot non sono disponibili per questi volumi. Per sfruttare questi devi eseguire la migrazione completa del carico di lavoro stateful a CSI ricreando specifica della risorsa Kubernetes con campi CSI. Abbiamo sviluppato un strumenti automatizzati per facilitare la migrazione dei carichi di lavoro stateful a CSI senza tempi di inattività delle applicazioni, ti consentono di usare l'intero set di funzionalità CSI.
Utilizzare driver di terze parti
Se vuoi eseguire il provisioning di volumi di archiviazione diversi dai datastore vSphere, puoi un nuovo oggetto StorageClass in un cluster che usa un driver di archiviazione diverso. Poi potrai imposta il valore predefinito del cluster, o configurare i carichi di lavoro per l'utilizzo di StorageClass (esempio di StatefulSet).
Partner per l'archiviazione
Abbiamo collaborato con molti fornitori di servizi di archiviazione per qualificare i loro sistemi di archiviazione con Google Distributed Cloud. Consulta l'elenco completo degli strumenti di archiviazione idonei partner di Google.
Espansione del volume
Puoi espandere le dimensioni un volume permanente dopo che ne è stato eseguito il provisioning modificando la capacità nell'oggetto PersistentVolumeClaim. Puoi espandere online mentre il volume è utilizzato da un pod o un'espansione offline in cui il volume in uso.
Per Driver CSI vSphere, l'espansione offline è disponibile nelle versioni di vSphere >= 7.0 ed è disponibile l'espansione online è disponibile nelle versioni di vSphere >= 7.0 Update 2.
Il campo StorageClass standard-rwo
imposta allowVolumeExpansion
su true per impostazione predefinita
per i cluster appena creati in esecuzione su >= vSphere 7.0. Puoi usare sia online
e l'espansione offline dei volumi usando questo oggetto StorageClass. Per un upgrade
in un cluster, perché gli oggetti StorageClass non vengono modificati negli upgrade dei cluster, quando
viene eseguito l'upgrade del cluster dalla versione 1.7 alla 1.8, l'impostazione allowVolumeExpansion
in
Il valore standard-rwo
non viene configurato, il che significa che l'espansione del volume non è consentita.
Per ulteriori informazioni sull'espansione del volume, consulta Utilizzo dell'espansione del volume.
Snapshot dei volumi CSI
Puoi creare snapshot di archiviazione permanente utilizzando il comando
VolumeSnapshot
e
VolumeSnapshotClass
Google Cloud. Per utilizzare questa funzionalità su un volume CSI, il driver CSI deve supportare
snapshot di volume e il container collaterale external-snapshotter
deve essere
incluso nel deployment del driver CSI.
Per ulteriori informazioni sugli snapshot dei volumi, consulta Utilizzo degli snapshot del volume.
Il deployment dei controller snapshot CSI viene eseguito automaticamente quando crei in un cluster Kubernetes.
Pulizia del volume
Quando elimini un cluster utente, i volumi di cui è stato eseguito il provisioning dal driver CSI vSphere non vengono eliminati. Devi eliminare tutti i volumi, gli oggetti PersistentVolumeClaim, e gli oggetti StatefulSet vengono eliminati prima di eliminare il cluster.
Risoluzione dei problemi
Consulta la sezione Risoluzione dei problemi di archiviazione.