Este documento mostra como migrar um banco de dados do vSphere para a gestão baseada em políticas de armazenamento (SPBM).
Esta página destina-se a especialistas de armazenamento que configuram e gerem o desempenho, a utilização e as despesas de armazenamento. Para saber mais sobre as funções comuns e exemplos de tarefas que referimos no conteúdo, consulte o artigo Funções e tarefas comuns do utilizador do GKE. Google Cloud
1.30: GA
1.29: pré-visualização
1.16 e anteriores: não disponível
Contexto
Existem quatro locais onde pode especificar um arquivo de dados nos ficheiros de configuração do cluster:
Cluster de administração: vCenter.datastore
Cluster de utilizadores ao nível do cluster, que inclui nós do plano de controlo e todos os node pools de trabalho: vCenter.datastore
Nós do plano de controlo do cluster de utilizadores: masterNode.vsphere.datastore
Node pools de worker do cluster de utilizadores: nodePools[i].vsphere.datastore
A herança destes campos é a seguinte:
adminCluster.vCenter.datastore -> userCluster.vCenter.datastore -> (userCluster.masterNode.vsphere.datastore and userCluster.nodePools[i].vsphere.datastore)
Exemplos:
Se
userCluster.vCenter.datastore
estiver vazio, herda o valor deadminCluster.vCenter.datastore
.Se
userCluster.nodePools[i].vsphere.datastore
estiver vazio, herda o valor deuserCluster.vCenter.datastore
.
Da mesma forma, existem quatro locais para especificar uma política de armazenamento:
Cluster de administrador vCenter.storagePolicyName
Cluster de utilizadores ao nível do cluster, que inclui nós do painel de controlo e todos os node pools de trabalho: vCenter.storagePolicyName
Nós do plano de controlo do cluster de utilizadores: masterNode.vsphere.storagePolicyName
User cluster worker node pools: nodePools[i].vsphere.storagePolicyName
A herança dos campos storagePolicyName
é igual à dos campos datastore
.
Antes de começar
- Este processo é uma migração unidirecional. Não suportamos a migração de volta para o estado anterior.
- O arquivo de dados tem de ser compatível com a nova política de armazenamento que vai definir.
- Apenas são suportados clusters de administrador de alta disponibilidade (HA). Se o cluster de administrador não for um administrador de alta disponibilidade, tem de migrar primeiro o cluster de administrador para alta disponibilidade.
Migre um cluster de utilizadores
Os passos que usa para a migração dependem de querer migrar todo o cluster de utilizadores ou se quer migrar os nós do plano de controlo e os conjuntos de nós de trabalho separadamente. Esta opção permite-lhe selecionar políticas de armazenamento diferentes para nós do plano de controlo e conjuntos de nós de trabalho.
Para ajudar no planeamento de um período de manutenção, tenha em atenção o seguinte:
A migração de todo o cluster requer apenas uma atualização do cluster.
A migração dos nós do plano de controlo e dos pools de nós de trabalho separadamente requer duas atualizações do cluster.
Todo o cluster
Use estes passos se quiser migrar todo o cluster, incluindo todos os nós do plano de controlo e os conjuntos de nós de trabalho. A versão do cluster de utilizadores tem de ser 1.30 ou superior.
Modifique o ficheiro de configuração do cluster de utilizadores da seguinte forma:
Defina o campo
vCenter.storagePolicyName
com o nome da política de armazenamento.Remova ou comente o seguinte, se estiver especificado:
vCenter.datastore
campo- Secção
masterNode.vsphere
nodepools[i].vsphere.datastore
nodepools[i].vsphere.storagePolicyName
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
vCenter: datastore: ds-1
Após as alterações:
vCenter: storagePolicyName: sp-1 # datastore: ds-1
Atualize o cluster de utilizadores:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do ficheiro kubeconfig do cluster de administrador.USER_CLUSTER_CONFIG
: o caminho do ficheiro de configuração do cluster do utilizador.
Atualize o StorageClass
incluído
Depois de atualizar as definições de configuração no cluster, tem de
atualizar o StorageClass
incluído.
Obtenha o valor predefinido atual de
StorageClass
para ovsphere-csi-driver
incluído, que se chamastandard-rwo
, e guarde-o num ficheiro local denominadostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Substitua
USER_CLUSTER_KUBECONFIG
pelo caminho do kubeconfig do cluster de utilizadores.Faça uma cópia de
storage-class.yaml
como precaução, uma vez que tem de fazer alterações ao ficheiro:cp storage-class.yaml storage-class.yaml-backup.yaml
Elimine o grupo
StorageClass
predefinido do cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class.yaml
da seguinte forma:Elimine ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o para o nome da política de armazenamento.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Após as alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de utilizadores:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Apenas clusters de utilizadores do Kubeception
Para clusters de utilizadores do Kubeception, tem de atualizar o StorageClass
para os nós do plano de controlo do cluster de utilizadores no cluster de administrador. Os clusters Kubeception têm o campo de configuração enableControlplaneV2
definido como false
.
Quando o Controlplane V2 está ativado, o plano de controlo do cluster de utilizador é executado no próprio cluster de utilizador. Quando o Controlplane V2 não está ativado, o plano de controlo para o cluster de utilizadores é executado no cluster de administrador, o que é denominado kubeception.
Execute o seguinte comando para determinar se o cluster tem o Controlplane V2 ativado:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Se o resultado for false
, conclua os passos seguintes para atualizar o valor predefinido
StorageClass
para os nós do plano de controlo do cluster de utilizadores no cluster
de administrador:
Obtenha o valor predefinido atual de
StorageClass
para o elementovsphere-csi-driver
, que se chamaUSER_CLUSTER_NAME-csi
, e guarde-o num ficheiro local denominadostorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Substitua
ADMIN_CLUSTER_KUBECONFIG
pelo caminho do kubeconfig do cluster de administrador.Faça uma cópia de
storage-class-kubeception.yaml
como precaução, uma vez que tem de fazer alterações ao ficheiro:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Elimine o grupo
StorageClass
predefinido do cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class-kubeception.yaml
da seguinte forma:Elimine ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o para o nome da política de armazenamento.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Após as alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de administrador:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Após a migração
Se criar um novo conjunto de nós após uma migração, o novo conjunto segue as regras de herança de acordo com o cluster atualizado.
Por exemplo, suponhamos que migrou vCenter.datastore
para uma política de armazenamento.
Agora, se criar um novo conjunto de nós e deixar nodePools[i].vsphere.datastore
e nodePools[i].vsphere.storagePolicyName
vazios, o novo conjunto de nós herda a política de armazenamento especificada em vCenter.storagePolicyName
.
Nós separadamente
Use estes passos se quiser migrar os nós do plano de controlo e os node pools de trabalho separadamente.
Apenas versão 1.29: obtenha a configuração atual do cluster. Este passo não é necessário se o cluster de utilizadores estiver na versão 1.30 ou superior.
gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster-name USER_CLUSTER_NAME \ --output-dir ./gen-files
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do ficheiro kubeconfig para o cluster de administrador.USER_CLUSTER_NAME
: o nome do cluster de utilizadores.
Em
./gen-files
, localizeuser-cluster.yaml
.Para mais informações sobre como obter o ficheiro de configuração, consulte o artigo Gere ficheiros de configuração a partir de um cluster.
O ficheiro de configuração gerado tem o nome
datastore
definido em cada nível: cluster,masterNode
(para nós do plano de controlo) enodepools
(para nós de trabalho), conforme mostrado no exemplo seguinte: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
Migre nós do plano de controlo
Siga estes passos para migrar os nós do plano de controlo:
Faça as seguintes alterações no ficheiro de configuração do cluster de utilizadores:
- Defina o campo
masterNode.vsphere.storagePolicyName
com o nome da política de armazenamento. - Elimine ou comente o campo
masterNode.vsphere.datastore
.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
masterNode: vsphere: datastore: ds-1
Após as alterações:
masterNode: vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Defina o campo
Atualize o cluster de utilizadores:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do ficheiro kubeconfig do cluster de administrador.USER_CLUSTER_CONFIG
: o caminho do ficheiro de configuração do cluster do utilizador.
Aguarde que o comando de atualização seja concluído antes de atualizar os conjuntos de nós.
Migre node pools
Siga os passos abaixo para migrar todos os conjuntos de nós:
Faça as seguintes alterações no ficheiro de configuração do cluster de utilizadores:
- Defina cada campo
nodePools[i].vsphere.storagePolicyName
com o nome da política de armazenamento. - Elimine ou comente cada campo
nodePools[i].vsphere.datastore
.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Após as alterações:
nodepools: - name: pool-1 vsphere: # datastore: ds-1 storagePolicyName: sp-1 - name: pool-2 vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Defina cada campo
Atualize o cluster de utilizadores:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Opcionalmente, atualize a política de armazenamento ao nível do cluster
Para clusters de utilizadores, os campos datastore
e storagePolicyName
na secção vCenter
ao nível do cluster são um valor predefinido usado pelas secções masterNode
e nodepools
. Depois de concluir os passos anteriores, as definições de nível de cluster vCenter
datastore
e storagePolicyName
não são usadas por nenhum componente do cluster. Pode deixar a secção vCenter
ao nível do cluster
tal como está ou atualizá-la para ser consistente com masterNode
e nodepools
.
Se deixar a definição tal como está, recomendamos que adicione um comentário
acima da secção vCenter
ao nível do cluster a indicar que a definição é
ignorada porque é substituída pelas definições nas secções masterNode
e
nodepools
.
Se preferir, pode alterar a secção vCenter
ao nível do cluster para corresponder às secções masterNode
e nodepools
e atualizar o cluster através dos seguintes passos:
Modifique o ficheiro de configuração do cluster de utilizadores da seguinte forma:
- Defina o campo
vCenter.storagePolicyName
com o nome da política de armazenamento. - Remova ou comente o campo
vCenter.datastore
.
- Defina o campo
Atualize o cluster de utilizadores:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Este comando de atualização não faz alterações ao cluster, mas atualiza os campos do lado do servidor (
OnPremUserCluster
)vCenter.datastore
evCenter.storagePolicyName
.
Atualize o StorageClass
incluído
Depois de atualizar as definições de configuração, tem de atualizar o
StorageClass
incluído.
Obtenha o valor predefinido atual de
StorageClass
para ovsphere-csi-driver
incluído, que se chamastandard-rwo
, e guarde-o num ficheiro local denominadostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Substitua
USER_CLUSTER_KUBECONFIG
pelo caminho do kubeconfig do cluster de utilizadores.Faça uma cópia de
storage-class.yaml
como precaução, uma vez que tem de fazer alterações ao ficheiro:cp storage-class.yaml storage-class.yaml-backup.yaml
Elimine o grupo
StorageClass
predefinido do cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class.yaml
da seguinte forma:Elimine ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o para o nome da política de armazenamento.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Após as alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de utilizadores:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Apenas clusters de utilizadores do Kubeception
Para clusters de utilizadores do Kubeception, tem de atualizar o StorageClass
para os nós do plano de controlo do cluster de utilizadores no cluster de administrador. Os clusters Kubeception têm o campo de configuração enableControlplaneV2
definido como false
.
Quando o Controlplane V2 está ativado, o plano de controlo do cluster de utilizador é executado no próprio cluster de utilizador. Quando o Controlplane V2 não está ativado, o plano de controlo para o cluster de utilizadores é executado no cluster de administrador, o que é denominado kubeception.
Execute o seguinte comando para determinar se o cluster tem o Controlplane V2 ativado:
kubectl get onpremuserclusters --kubeconfig USER_CLUSTER_KUBECONFIG \ -n kube-system -o jsonpath='{.items[0].spec.enableControlplaneV2}' && echo
Se o resultado for false
, conclua os passos seguintes para atualizar o valor predefinido
StorageClass
para os nós do plano de controlo do cluster de utilizadores no cluster
de administrador:
Obtenha o valor predefinido atual de
StorageClass
para o elementovsphere-csi-driver
, que se chamaUSER_CLUSTER_NAME-csi
, e guarde-o num ficheiro local denominadostorage-class-kubeception.yaml
.kubectl get storageclass USER_CLUSTER_NAME-csi -oyaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG > storage-class-kubeception.yaml
Substitua
ADMIN_CLUSTER_KUBECONFIG
pelo caminho do kubeconfig do cluster de administrador.Faça uma cópia de
storage-class-kubeception.yaml
como precaução, uma vez que tem de fazer alterações ao ficheiro:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Elimine o grupo
StorageClass
predefinido do cluster:kubectl delete storageclass USER_CLUSTER_NAME-csi \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class-kubeception.yaml
da seguinte forma:Elimine ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o para o nome da política de armazenamento.
As seguintes configurações de exemplo mostram estas alterações.
Antes das alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Após as alterações:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de administrador:kubectl apply -f storage-class-kubeception.yaml \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Migre um cluster de administrador
Certifique-se de que o cluster de administrador também é atualizado com o nome da política de armazenamento.
Faça as seguintes alterações no ficheiro de configuração do cluster de administrador:
- Remova ou comente o campo
vCenter.datastore
. - Defina o campo
vCenter.storagePolicyName
com o nome da política de armazenamento.
- Remova ou comente o campo
Atualize o cluster de administrador:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
Substitua o seguinte:
ADMIN_CLUSTER_KUBECONFIG
: o caminho para o ficheiro kubeconfig do cluster de administrador.ADMIN_CLUSTER_CONFIG
: o caminho para o ficheiro de configuração do cluster de administrador.
Migração de armazenamento com o SPBM
Após a migração do arquivo de dados para o SPBM, os seus clusters estão a usar o SPBM. No entanto, a migração não move cargas de trabalho de armazenamento (como discos de dados de máquinas ou volumes de contentores) do antigo banco de dados.
Para mover cargas de trabalho de armazenamento, consulte o artigo Migração de armazenamento com gestão baseada em políticas de armazenamento.