Este documento mostra como migrar um repositório de dados do vSphere para o gerenciamento baseado em políticas de armazenamento (SPBM, na sigla em inglês).
Esta página é destinada a especialistas em armazenamento que configuram e gerenciam o desempenho, o uso e os gastos de armazenamento. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE.
1.30: GA
1.29: pré-lançamento
1.16 e versões anteriores: não disponível
Contexto
Há quatro lugares em que você pode especificar um repositório de dados em arquivos de configuração do cluster:
Cluster de administrador: vCenter.datastore
Cluster de usuário no nível do cluster, que inclui nós do plano de controle e todos os pools de nós de trabalho: vCenter.datastore
Nós do plano de controle do cluster de usuário: masterNode.vsphere.datastore
Pools de nós de trabalho do cluster de usuário: nodePools[i].vsphere.datastore
A herança desses 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, ele herda o valor deadminCluster.vCenter.datastore
.Se
userCluster.nodePools[i].vsphere.datastore
estiver vazio, ele herda o valor deuserCluster.vCenter.datastore
.
Da mesma forma, há quatro lugares para especificar uma política de armazenamento:
Cluster de administrador vCenter.storagePolicyName
Cluster de usuário no nível do cluster, que inclui nós do plano de controle e todos os pools de nós de trabalho: vCenter.storagePolicyName
Nós do plano de controle do cluster de usuário: masterNode.vsphere.storagePolicyName
Pools de nós de trabalho do cluster de usuário: nodePools[i].vsphere.storagePolicyName
A herança dos campos storagePolicyName
é igual à dos campos
datastore
.
Antes de começar
- Esse processo é uma migração unidirecional. Não é possível migrar de volta para o estado anterior.
- O armazenamento de dados precisa ser compatível com a nova política de armazenamento que você vai definir.
- Somente clusters de administrador de alta disponibilidade (HA) são compatíveis. Se o cluster de administrador não for HA, primeiro migre o cluster de administrador para HA.
Migrar um cluster de usuário
As etapas usadas para a migração dependem se você quer migrar todo o cluster de usuário ou se quer migrar os nós do plano de controle e os pools de nós de trabalho separadamente. Com essa opção, é possível selecionar políticas de armazenamento diferentes para nós do plano de controle e pools de nós de trabalho.
Para ajudar no planejamento de uma janela de manutenção, observe o seguinte:
Migrar todo o cluster requer apenas uma atualização.
Migrar os nós do plano de controle e os pools de nós de trabalho separadamente exige duas atualizações de cluster.
Todo o cluster
Use estas etapas se quiser migrar todo o cluster, incluindo todos os nós do plano de controle e pools de nós de trabalho. A versão do cluster de usuário precisa ser 1.30 ou mais recente.
Modifique o arquivo de configuração do cluster de usuário da seguinte maneira:
Defina o campo
vCenter.storagePolicyName
com o nome da política de armazenamento.Remova ou comente o seguinte, se especificado:
- Campo
vCenter.datastore
- Seção
masterNode.vsphere
nodepools[i].vsphere.datastore
nodepools[i].vsphere.storagePolicyName
- Campo
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
vCenter: datastore: ds-1
Depois das mudanças:
vCenter: storagePolicyName: sp-1 # datastore: ds-1
Atualize o cluster de usuário:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do arquivo kubeconfig do cluster de administradorUSER_CLUSTER_CONFIG
: o caminho do arquivo de configuração do cluster de usuário.
Atualizar o StorageClass
agrupado
Depois de atualizar as configurações no cluster, é necessário atualizar o StorageClass
agrupado.
Receba o
StorageClass
padrão atual para ovsphere-csi-driver
agrupado, que é chamado destandard-rwo
, e salve-o em um arquivo local chamadostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Substitua
USER_CLUSTER_KUBECONFIG
pelo caminho do arquivo kubeconfig do cluster de usuário.Faça uma cópia de
storage-class.yaml
como precaução, já que você precisa fazer mudanças no arquivo:cp storage-class.yaml storage-class.yaml-backup.yaml
Exclua o
StorageClass
padrão do cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class.yaml
da seguinte forma:Exclua ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o como o nome da política de armazenamento.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Depois das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de usuário:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Somente clusters de usuário do Kubeception
Para clusters de usuário do Kubeception, é necessário atualizar o StorageClass
dos nós do plano de controle do cluster de usuário 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 controle do cluster de usuário é executado no próprio cluster. Quando o Controlplane V2 não está ativado, o plano de controle do cluster de usuário é executado no cluster de administrador, o que é chamado de kubeception.
Execute o comando a seguir 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 a saída for false
, siga estas etapas para atualizar o StorageClass
padrão dos nós do plano de controle do cluster de usuário no cluster de administrador:
Receba o
StorageClass
padrão atual para ovsphere-csi-driver
agrupado, que é chamado deUSER_CLUSTER_NAME-csi
, e salve-o em um arquivo local chamadostorage-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, já que você precisa fazer mudanças no arquivo:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Exclua o
StorageClass
padrão 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:Exclua ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o como o nome da política de armazenamento.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Depois das mudanças:
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 você criar um novo pool de nós após uma migração, ele vai seguir as regras de herança de acordo com o cluster atualizado.
Por exemplo, suponha que você tenha migrado vCenter.datastore
para uma política de armazenamento.
Agora, se você criar um novo pool de nós e deixar
nodePools[i].vsphere.datastore
e nodePools[i].vsphere.storagePolicyName
vazios, o novo pool de nós herda a política de armazenamento especificada em
vCenter.storagePolicyName
.
Nós separadamente
Use estas etapas se quiser migrar os nós do plano de controle e os pools de nós de trabalho separadamente.
Somente versão 1.29: confira a configuração atual do cluster. Essa etapa não é necessária se o cluster de usuário estiver na versão 1.30 ou mais recente.
gkectl get-config cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster-name USER_CLUSTER_NAME \ --output-dir ./gen-files
Substitua:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do arquivo kubeconfig do cluster de administrador.USER_CLUSTER_NAME
: o nome do cluster do usuário.
No
./gen-files
, localizeuser-cluster.yaml
.Para mais informações sobre como acessar o arquivo de configuração, consulte Gerar arquivos de configuração de um cluster.
O arquivo de configuração gerado tem o nome
datastore
definido em cada nível: cluster,masterNode
(para nós do plano de controle) enodepools
(para nós de trabalho), conforme mostrado no exemplo a seguir: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
Migrar nós do plano de controle
Siga estas etapas para migrar os nós do plano de controle:
Faça as seguintes mudanças no arquivo de configuração do cluster de usuário:
- Defina o campo
masterNode.vsphere.storagePolicyName
com o nome da política de armazenamento. - Exclua ou comente o campo
masterNode.vsphere.datastore
.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
masterNode: vsphere: datastore: ds-1
Depois das mudanças:
masterNode: vsphere: # datastore: ds-1 storagePolicyName: sp-1
- Defina o campo
Atualize o cluster de usuário:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG
: o caminho do arquivo kubeconfig do cluster de administradorUSER_CLUSTER_CONFIG
: o caminho do arquivo de configuração do cluster de usuário.
Aguarde a conclusão do comando de atualização antes de atualizar os pools de nós.
Migrar pools de nós
Siga estas etapas para migrar todos os pools de nós:
Faça as seguintes mudanças no arquivo de configuração do cluster de usuário:
- Defina cada campo
nodePools[i].vsphere.storagePolicyName
com o nome da política de armazenamento. - Exclua ou comente cada campo
nodePools[i].vsphere.datastore
.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
nodepools: - name: pool-1 vsphere: datastore: ds-1 - name: pool-2 vsphere: datastore: ds-1
Depois das mudanças:
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 usuário:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Se quiser, atualize a política de armazenamento no nível do cluster
Para clusters de usuários, os campos datastore
e storagePolicyName
na seção
vCenter
no nível do cluster são um valor padrão usado pelas seções masterNode
e nodepools
. Depois de concluir as etapas anteriores, as configurações de vCenter
datastore
e storagePolicyName
no nível do cluster não serão usadas por nenhum componente do cluster. Você pode deixar a seção vCenter
no nível do cluster como está ou atualizá-la para que seja consistente com masterNode
e nodepools
.
Se você deixar a configuração como está, recomendamos adicionar um comentário acima da seção vCenter
no nível do cluster informando que a configuração é ignorada porque é substituída pelas configurações nas seções masterNode
e nodepools
.
Se preferir, mude a seção vCenter
no nível do cluster para corresponder às seções masterNode
e nodepools
e atualize o cluster seguindo estas etapas:
Modifique o arquivo de configuração do cluster de usuário da seguinte maneira:
- 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 usuário:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
Esse comando de atualização não fará mudanças no cluster, mas vai atualizar os campos
vCenter.datastore
evCenter.storagePolicyName
do lado do servidor (OnPremUserCluster
).
Atualizar o StorageClass
agrupado
Depois de atualizar as configurações, é necessário atualizar o StorageClass
agrupado.
Receba o
StorageClass
padrão atual para ovsphere-csi-driver
agrupado, que é chamado destandard-rwo
, e salve-o em um arquivo local chamadostorage-class.yaml
.kubectl get storageclass standard-rwo -oyaml \ --kubeconfig USER_CLUSTER_KUBECONFIG > storage-class.yaml
Substitua
USER_CLUSTER_KUBECONFIG
pelo caminho do arquivo kubeconfig do cluster de usuário.Faça uma cópia de
storage-class.yaml
como precaução, já que você precisa fazer mudanças no arquivo:cp storage-class.yaml storage-class.yaml-backup.yaml
Exclua o
StorageClass
padrão do cluster:kubectl delete storageclass standard-rwo \ --kubeconfig USER_CLUSTER_KUBECONFIG
Atualize a configuração em
storage-class.yaml
da seguinte forma:Exclua ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o como o nome da política de armazenamento.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Depois das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... storagePolicyName: sp-1
Aplique o
StorageClass
modificado ao cluster de usuário:kubectl apply -f storage-class.yaml \ --kubeconfig USER_CLUSTER_KUBECONFIG
Somente clusters de usuário do Kubeception
Para clusters de usuário do Kubeception, é necessário atualizar o StorageClass
dos nós do plano de controle do cluster de usuário 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 controle do cluster de usuário é executado no próprio cluster. Quando o Controlplane V2 não está ativado, o plano de controle do cluster de usuário é executado no cluster de administrador, o que é chamado de kubeception.
Execute o comando a seguir 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 a saída for false
, siga estas etapas para atualizar o StorageClass
padrão dos nós do plano de controle do cluster de usuário no cluster de administrador:
Receba o
StorageClass
padrão atual para ovsphere-csi-driver
agrupado, que é chamado deUSER_CLUSTER_NAME-csi
, e salve-o em um arquivo local chamadostorage-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, já que você precisa fazer mudanças no arquivo:cp storage-class-kubeception.yaml storage-class-kubeception-backup.yaml
Exclua o
StorageClass
padrão 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:Exclua ou comente os seguintes campos:
parameters.datastoreURL
resourceVersion
Adicione o campo
parameters.storagePolicyName
e defina-o como o nome da política de armazenamento.
As configurações de exemplo a seguir mostram essas mudanças.
Antes das mudanças:
apiVersion: storage.k8s.io/v1 kind: StorageClass name: standard-rwo Parameters: ... datastoreURL: ds//ds-1
Depois das mudanças:
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
Migrar um cluster de administrador
Verifique se o cluster de administrador também está atualizado com o nome da política de armazenamento.
Faça as seguintes mudanças no arquivo 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:
ADMIN_CLUSTER_KUBECONFIG
: o caminho até o arquivo kubeconfig do cluster de administrador.ADMIN_CLUSTER_CONFIG
: o caminho até o arquivo de configuração do cluster de administrador.
Migração de armazenamento com o SPBM
Após a migração do repositório de dados para o SPBM, seus clusters vão usar o SPBM. No entanto, a migração não move nenhuma carga de trabalho de armazenamento (como discos de dados de máquinas ou volumes de contêineres) do armazenamento de dados antigo.
Para mover cargas de trabalho de armazenamento, consulte Migração do armazenamento com o gerenciamento baseado em políticas de armazenamento.