Migre o datastore para o SPBM

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:

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 de adminCluster.vCenter.datastore.

  • Se userCluster.nodePools[i].vsphere.datastore estiver vazio, herda o valor de userCluster.vCenter.datastore.

Da mesma forma, existem quatro locais para especificar uma política de armazenamento:

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.

  1. Modifique o ficheiro de configuração do cluster de utilizadores da seguinte forma:

    1. Defina o campo vCenter.storagePolicyName com o nome da política de armazenamento.

    2. 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
    
  2. 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.

  1. Obtenha o valor predefinido atual de StorageClass para o vsphere-csi-driver incluído, que se chama standard-rwo, e guarde-o num ficheiro local denominado storage-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.

  2. 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
    
  3. Elimine o grupo StorageClass predefinido do cluster:

    kubectl delete storageclass standard-rwo \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    
  4. Atualize a configuração em storage-class.yaml da seguinte forma:

    1. Elimine ou comente os seguintes campos:

      • parameters.datastoreURL
      • resourceVersion
    2. 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
    
  5. 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:

  1. Obtenha o valor predefinido atual de StorageClass para o elemento vsphere-csi-driver, que se chama USER_CLUSTER_NAME-csi, e guarde-o num ficheiro local denominado storage-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.

  2. 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
    
  3. Elimine o grupo StorageClass predefinido do cluster:

    kubectl delete storageclass USER_CLUSTER_NAME-csi \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. Atualize a configuração em storage-class-kubeception.yaml da seguinte forma:

    1. Elimine ou comente os seguintes campos:

      • parameters.datastoreURL
      • resourceVersion
    2. 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
    
  5. 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.

  1. 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, localize user-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) e nodepools (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:

  1. 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
    
  2. 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:

  1. 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
    
  2. 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:

  1. 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.
  2. 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 e vCenter.storagePolicyName.

Atualize o StorageClass incluído

Depois de atualizar as definições de configuração, tem de atualizar o StorageClass incluído.

  1. Obtenha o valor predefinido atual de StorageClass para o vsphere-csi-driver incluído, que se chama standard-rwo, e guarde-o num ficheiro local denominado storage-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.

  2. 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
    
  3. Elimine o grupo StorageClass predefinido do cluster:

    kubectl delete storageclass standard-rwo \
        --kubeconfig USER_CLUSTER_KUBECONFIG
    
  4. Atualize a configuração em storage-class.yaml da seguinte forma:

    1. Elimine ou comente os seguintes campos:

      • parameters.datastoreURL
      • resourceVersion
    2. 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
    
  5. 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:

  1. Obtenha o valor predefinido atual de StorageClass para o elemento vsphere-csi-driver, que se chama USER_CLUSTER_NAME-csi, e guarde-o num ficheiro local denominado storage-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.

  2. 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
    
  3. Elimine o grupo StorageClass predefinido do cluster:

    kubectl delete storageclass USER_CLUSTER_NAME-csi \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. Atualize a configuração em storage-class-kubeception.yaml da seguinte forma:

    1. Elimine ou comente os seguintes campos:

      • parameters.datastoreURL
      • resourceVersion
    2. 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
    
  5. 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.

  1. 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.
  2. 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.