Questo documento mostra come eseguire la migrazione di un datastore vSphere a Storage Policy Based Management (SPBM).
Questa pagina è rivolta agli esperti di archiviazione che configurano e gestiscono le prestazioni, l'utilizzo e le spese dell'archiviazione. Per scoprire di più sui ruoli comuni e sugli esempi di attività a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni per gli utenti di GKE Enterprise.
1.30: versione GA
1.29: versione di anteprima
1.16 e versioni precedenti: non disponibile
Contesto
Esistono quattro posizioni in cui puoi specificare un datastore nei file di configurazione del cluster:
Cluster di amministrazione: vCenter.datastore
Cluster utente a livello di cluster, che include i nodi del control plane e tutti i pool di nodi worker: vCenter.datastore
Nodi del control plane del cluster utente: masterNode.vsphere.datastore
Node pool dei nodi worker del cluster utente: nodePools[i].vsphere.datastore
L'ereditarietà di questi campi è la seguente:
adminCluster.vCenter.datastore -> userCluster.vCenter.datastore -> (userCluster.masterNode.vsphere.datastore and userCluster.nodePools[i].vsphere.datastore)
Esempi:
Se
userCluster.vCenter.datastore
è vuoto, eredita il valore daadminCluster.vCenter.datastore
.Se
userCluster.nodePools[i].vsphere.datastore
è vuoto, eredita il valore dauserCluster.vCenter.datastore
.
Allo stesso modo, esistono quattro posizioni in cui specificare un criterio di archiviazione:
Cluster di amministrazione vCenter.storagePolicyName
Cluster utente a livello di cluster, che include i nodi del piano di controllo e tutti i pool di nodi worker: vCenter.storagePolicyName
Nodi del control plane del cluster utente: masterNode.vsphere.storagePolicyName
Node pool dei nodi worker del cluster utente: nodePools[i].vsphere.storagePolicyName
L'eredità per i campi storagePolicyName
è la stessa per i campi
datastore
.
Prima di iniziare
- Si tratta di una migrazione unidirezionale. Non supportiamo la migrazione allo stato precedente.
- Il data store deve essere compatibile con il nuovo criterio di archiviazione che hai intenzione di impostare.
- Sono supportati solo i cluster di amministrazione ad alta disponibilità (HA). Se il tuo cluster di amministrazione non è ad alta disponibilità, devi prima eseguire la migrazione del cluster di amministrazione ad alta disponibilità.
Esegui la migrazione di un cluster utente
I passaggi da seguire per la migrazione dipendono dal fatto che tu voglia eseguire la migrazione dell'intero cluster utente o dei nodi del piano di controllo e dei pool di nodi worker distintamente. Questa opzione ti consente di selezionare diversi criteri di archiviazione per i nodi del piano di controllo e i pool di nodi worker.
Per aiutarti a pianificare un periodo di manutenzione, tieni presente quanto segue:
La migrazione dell'intero cluster richiede un solo aggiornamento del cluster.
La migrazione dei pool di nodi del piano di controllo e dei nodi worker separatamente richiede due aggiornamenti del cluster.
Intero cluster
Segui questi passaggi se vuoi eseguire la migrazione dell'intero cluster, inclusi tutti i nodi del piano di controllo e i pool di nodi worker. La versione del cluster utente deve essere almeno 1.30.
Modifica il file di configurazione del cluster utente come segue:
Imposta il campo
vCenter.storagePolicyName
con il nome del criterio di archiviazione.Rimuovi o inserisci un commento per quanto segue, se specificato:
- Campo
vCenter.datastore
- Sezione
masterNode.vsphere
nodepools[i].vsphere.datastore
nodepools[i].vsphere.storagePolicyName
- Campo
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
vCenter: datastore: ds-1
Dopo le modifiche:
vCenter: storagePolicyName: sp-1 # datastore: ds-1
Aggiorna il cluster utente:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG
: il percorso del file di configurazione del cluster utente.
Aggiornare StorageClass
in bundle
Dopo aver aggiornato le impostazioni di configurazione nel cluster, devi aggiornare il StorageClass
incluso.
Recupera il
StorageClass
predefinito corrente per ilvsphere-csi-driver
incluso, denominatostandard-rwo
, e salvalo in un file locale denominatostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Crea una copia di
storage-class.yaml
per precauzione, poiché dovrai apportare modifiche al file:cp storage-class.yaml storage-class.yaml-backup.yaml
Elimina
StorageClass
predefinito dal cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Aggiorna la configurazione in
storage-class.yaml
come segue:Elimina o inserisci un commento nei seguenti campi:
parameters.datastoreURL
resourceVersion
Aggiungi il campo
parameters.storagePolicyName
e impostalo sul nome del criterio di archiviazione.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Dopo le modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Applica
StorageClass
modificato al cluster utente:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Solo cluster di utenti Kubeception
Per i cluster utente Kubeception, devi aggiornare StorageClass
per i nodi del piano di controllo del cluster utente nel cluster di amministrazione. I cluster Kubeception hanno il campo di configurazione enableControlplaneV2
impostato su false
.
Quando il control plane v2 è abilitato, il control plane per il cluster utente viene eseguito nel cluster utente stesso. Quando il control plane v2 non è abilitato, il control
plane per il cluster utente viene eseguito nel cluster di amministrazione, operazione nota come
kubeception.
Esegui il seguente comando per determinare se nel cluster è attivato Controlplane V2:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Se l'output è false
, completa i seguenti passaggi per aggiornare il valore predefinito StorageClass
per i nodi del piano di controllo del cluster utente nel cluster di amministrazione:
Recupera il
StorageClass
predefinito corrente per ilvsphere-csi-driver
incluso, denominatoUSER_CLUSTER_NAME-csi
, e salvalo in un file locale denominatostorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Sostituisci
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster di amministrazione.Crea una copia di
storage-class-kubeception.yaml
per precauzione, poiché devi apportare modifiche al file:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Elimina
StorageClass
predefinito dal cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aggiorna la configurazione in
storage-class-kubeception.yaml
come segue:Elimina o inserisci un commento nei seguenti campi:
parameters.datastoreURL
resourceVersion
Aggiungi il campo
parameters.storagePolicyName
e impostalo sul nome del criterio di archiviazione.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Dopo le modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Applica
StorageClass
modificato al cluster di amministrazione:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Dopo la migrazione
Se crei un nuovo pool di nodi dopo una migrazione, il nuovo pool segue le regole di ereditarietà in base al cluster aggiornato.
Ad esempio, supponiamo che tu abbia eseguito la migrazione di vCenter.datastore
a un criterio di archiviazione.
Ora, se crei un nuovo pool di nodi e lasci vuoti sia nodePools[i].vsphere.datastore
sia nodePools[i].vsphere.storagePolicyName
, il nuovo pool di nodi eredita il criterio di archiviazione specificato in vCenter.storagePolicyName
.
Nodi separatamente
Segui questi passaggi se vuoi eseguire la migrazione dei nodi del piano di controllo e dei pool di nodi worker separatamente.
Solo versione 1.29: ottieni la configurazione corrente del cluster. Questo passaggio non è necessario se il cluster utente è alla versione 1.30 o successiva.
gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster-name USER_CLUSTER_NAME \ --output-dir ./gen-files
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig per il cluster di amministrazione.USER_CLUSTER_NAME
: il nome del cluster di utenti.
In
./gen-files
, individuauser-cluster.yaml
.Per ulteriori informazioni su come ottenere il file di configurazione, consulta Genera file di configurazione da un cluster.
Il file di configurazione generato ha il nome
datastore
impostato a ogni livello: cluster,masterNode
(per i nodi del piano di controllo) enodepools
(per i nodi worker), come mostrato nell'esempio seguente:apiVersion: v1 kind: UserCluster ... # VCenter config in cluster level: vCenter: datastore: ds-1 ... # VCenter config in master node level: masterNode: vsphere: datastore: ds-1 ... # VCenter config in nodepool level: nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Esegui la migrazione dei nodi del control plane
Per eseguire la migrazione dei nodi del piano di controllo:
Apporta le seguenti modifiche al file di configurazione del cluster utente:
- Imposta il campo
masterNode.vsphere.storagePolicyName
con il nome del criterio di archiviazione. - Elimina o inserisci un commento nel campo
masterNode.vsphere.datastore
.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
masterNode: vsphere: datastore: ds-1
Dopo le modifiche:
masterNode: vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Imposta il campo
Aggiorna il cluster utente:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG
: il percorso del file di configurazione del cluster utente.
Attendi il completamento del comando di aggiornamento prima di aggiornare i pool di nodi.
Esegui la migrazione dei node pool
Per eseguire la migrazione di tutti i pool di nodi:
Apporta le seguenti modifiche al file di configurazione del cluster utente:
- Imposta ogni campo
nodePools[i].vsphere.storagePolicyName
con il nome del criterio di archiviazione. - Elimina o inserisci un commento in ogni campo
nodePools[i].vsphere.datastore
.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Dopo le modifiche:
nodepools: - name: pool-1 vsphere: # datastore: ds-1 storagePolicyName: sp-1 - name: pool-2 vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Imposta ogni campo
Aggiorna il cluster utente:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Se vuoi, aggiorna il criterio di archiviazione a livello di cluster
Per i cluster di utenti, i campi datastore
e storagePolicyName
nella sezione vCenter
a livello di cluster sono un valore predefinito utilizzato dalle sezioni masterNode
e nodepools
. Dopo aver completato i passaggi precedenti, le impostazioni vCenter
datastore
e storagePolicyName
a livello di cluster non verranno utilizzate da nessun componente del cluster. Puoi lasciare invariata la sezione vCenter
a livello di cluster o aggiornarla in modo che sia coerente con masterNode
e nodepools
.
Se lasci l'impostazione così com'è, ti consigliamo di aggiungere un commento sopra la sezione vCenter
a livello di cluster che indichi che l'impostazione viene ignorata perché sostituita dalle impostazioni nelle sezioni masterNode
e nodepools
.
Se preferisci, puoi modificare la sezione vCenter
a livello di cluster in modo che corrisponda alle sezioni masterNode
e nodepools
e aggiornare il cluster seguendo questi passaggi:
Modifica il file di configurazione del cluster utente come segue:
- Imposta il campo
vCenter.storagePolicyName
con il nome del criterio di archiviazione. - Rimuovi o inserisci un commento nel campo
vCenter.datastore
.
- Imposta il campo
Aggiorna il cluster utente:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Questo comando di aggiornamento non apporta modifiche al cluster, ma aggiorna i campi lato server (
OnPremUserCluster
)vCenter.datastore
evCenter.storagePolicyName
.
Aggiornare StorageClass
in bundle
Dopo aver aggiornato le impostazioni di configurazione, devi aggiornare il StorageClass
incluso.
Recupera il
StorageClass
predefinito corrente per ilvsphere-csi-driver
incluso, denominatostandard-rwo
, e salvalo in un file locale denominatostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Sostituisci
USER_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster utente.Crea una copia di
storage-class.yaml
per precauzione, poiché dovrai apportare modifiche al file:cp storage-class.yaml storage-class.yaml-backup.yaml
Elimina
StorageClass
predefinito dal cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Aggiorna la configurazione in
storage-class.yaml
come segue:Elimina o inserisci un commento nei seguenti campi:
parameters.datastoreURL
resourceVersion
Aggiungi il campo
parameters.storagePolicyName
e impostalo sul nome del criterio di archiviazione.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Dopo le modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Applica
StorageClass
modificato al cluster utente:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Solo cluster di utenti Kubeception
Per i cluster utente Kubeception, devi aggiornare StorageClass
per i nodi del piano di controllo del cluster utente nel cluster di amministrazione. I cluster Kubeception hanno il campo di configurazione enableControlplaneV2
impostato su false
.
Quando il control plane v2 è abilitato, il control plane per il cluster utente viene eseguito nel cluster utente stesso. Quando il control plane v2 non è abilitato, il control
plane per il cluster utente viene eseguito nel cluster di amministrazione, operazione nota come
kubeception.
Esegui il seguente comando per determinare se nel cluster è attivato Controlplane V2:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Se l'output è false
, completa i seguenti passaggi per aggiornare il valore predefinito StorageClass
per i nodi del piano di controllo del cluster utente nel cluster di amministrazione:
Recupera il
StorageClass
predefinito corrente per ilvsphere-csi-driver
incluso, denominatoUSER_CLUSTER_NAME-csi
, e salvalo in un file locale denominatostorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Sostituisci
ADMIN_CLUSTER_KUBECONFIG
con il percorso del file kubeconfig del cluster di amministrazione.Crea una copia di
storage-class-kubeception.yaml
per precauzione, poiché devi apportare modifiche al file:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Elimina
StorageClass
predefinito dal cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Aggiorna la configurazione in
storage-class-kubeception.yaml
come segue:Elimina o inserisci un commento nei seguenti campi:
parameters.datastoreURL
resourceVersion
Aggiungi il campo
parameters.storagePolicyName
e impostalo sul nome del criterio di archiviazione.
Le seguenti configurazioni di esempio mostrano queste modifiche.
Prima delle modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Dopo le modifiche:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Applica
StorageClass
modificato al cluster di amministrazione:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Esegui la migrazione di un cluster di amministrazione
Assicurati che anche il cluster di amministrazione sia aggiornato con il nome del criterio di archiviazione.
Apporta le seguenti modifiche al file di configurazione del cluster di amministrazione:
- Rimuovi o inserisci un commento nel campo
vCenter.datastore
. - Imposta il campo
vCenter.storagePolicyName
con il nome del criterio di archiviazione.
- Rimuovi o inserisci un commento nel campo
Aggiorna il cluster di amministrazione:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Sostituisci quanto segue:
ADMIN_CLUSTER_KUBECONFIG
: il percorso del file kubeconfig del cluster di amministrazione.ADMIN_CLUSTER_CONFIG
: il percorso del file di configurazione del cluster di amministrazione.
Migrazione dello spazio di archiviazione con SPBM
Dopo la migrazione del datastore a SPBM, i tuoi cluster ora utilizzano SPBM. Tuttavia, la migrazione non sposta i workload di archiviazione (ad esempio i dischi di dati della macchina o i volumi dei contenitori) dal vecchio datastore.
Per spostare i carichi di lavoro di archiviazione, consulta Migrazione dello spazio di archiviazione con la gestione basata su criteri di archiviazione.