Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Migrando o VMware vSphere de In-tree para Out-of-tree

O Kubernetes está se afastando da manutenção de provedores de nuvem in-tree. O VMware vSphere possui um provedor de nuvem out-of-tree que pode ser utilizado instalando o provedor de nuvem vSphere e os plugins de armazenamento em nuvem.

Esta página cobre como migrar do provedor de nuvem vSphere in-tree para out-of-tree e gerenciar as VMs existentes após a migração.

Ela segue os passos fornecidos na documentação oficial de migração do vSphere e fornece os passos a serem realizados no Rancher.

Limitação do Formato Cloud-config

Os volumes existentes que foram provisionados usando o seguinte formato de cloud-config não serão migrados devido a um bug existente na Interface de Armazenamento em Nuvem do vSphere (CSI).

Se o cloud-config tiver este formato para o caminho do datastore e do pool de recursos, o driver CSI do vSphere não conseguirá reconhecê-lo:

default-datastore: </datacenter>/datastore/<default-datastore-name>
resourcepool-path: "</datacenter>/host/<cluster-name>/Resources/<resource-pool-name>"

Volumes provisionados com o provedor in-tree usando o seguinte formato serão migrados corretamente:

default-datastore: <default-datastore-name>
resourcepool-path: "<cluster-name>/Resources/<resource-pool-name>"

Problema do Rancher rastreando este bug: https://github.com/rancher/rancher/issues/31105

Pré-requisitos

  • A migração do vSphere CSI requer vSphere 7.0u1. Para poder gerenciar os volumes in-tree existentes do vSphere, atualize o vSphere para 7.0u1.

  • A versão do Kubernetes deve ser 1.19 ou superior.

Migração

1. Instale o plugin CPI

Antes de instalar o CPI, precisamos aplicar um taint em todos os nós com node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule.

Isso pode ser feito executando os seguintes comandos:

curl -O https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh

Ou:

wget https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh
chmod +x taints.sh
./taints.sh <path to kubeconfig if running the command outside the cluster>

Depois que todos os nós tiverem sido taintados pela execução do script, inicie o chart Helm do vSphere CPI.

  1. Clique em ☰ > Gerenciamento de Cluster.

  2. Vá para o cluster onde o chart do vSphere CPI será instalado e clique em Explorar.

  3. Clique Apps  Charts.

  4. Clique vSphere CPI.

  5. Clique em Instalar.

  6. Preencha os detalhes obrigatórios do vCenter e clique em Instalar.

O vSphere CPI inicializa todos os nós com o ProviderID, que é necessário para o driver vSphere CSI.

Verifique se todos os nós estão inicializados com o ProviderID usando o seguinte comando:

kubectl describe nodes | grep "ProviderID"

2. Instale o driver CSI

  1. Clique em ☰ > Gerenciamento de Cluster.

  2. Vá para o cluster onde o chart vSphere CSI será instalado e clique em Explorar.

  3. Clique Apps  Charts.

  4. Clique vSphere CSI.

  5. Clique em Instalar.

  6. Preencha os detalhes obrigatórios do vCenter e clique em Instalar.

  7. Marque Personalizar opções do Helm antes da instalação e clique em Próximo.

  8. Na aba Recursos, marque Habilitar Migração CSI.

  9. Opcionalmente, vá para a aba Armazenamento e configure um datastore. Este chart cria uma StorageClass com o csi.vsphere.vmware.com como provisionador. Você pode fornecer a URL do datastore a ser usado para provisionamento de volumes CSI ao criar esta StorageClass. A URL do datastore pode ser encontrada no cliente vSphere selecionando o datastore e indo para a aba Resumo. Preencha os detalhes para a StorageClass.

  10. Clique em Instalar.

3. Edite o cluster para habilitar os feature flags de migração CSI.

  1. Ao editar o cluster, se a versão do Kubernetes for inferior a 1.19, selecione a versão do Kubernetes 1.19 ou superior no dropdown Versão do Kubernetes.

  2. Para habilitar os feature flags, clique em "Editar como YAML" e adicione o seguinte sob kube-controller e kubelet:

       extra_args:
         feature-gates: "CSIMigration=true,CSIMigrationvSphere=true"

4. Drene os nós de trabalho.

Os nós de trabalho devem ser drenados durante a atualização antes de alterar os argumentos do kubelet e do kube-controller-manager.

  1. Clique em ☰ > Gerenciamento de Cluster.

  2. Vá para o cluster onde você irá drenar os nós de trabalho e clique em ⋮ > Editar Config.

  3. Na seção Opções Avançadas, defina o campo Número Máximo de Nós de Trabalho Indisponíveis para 1.

  4. Para drenar os nós durante a atualização, selecione Drene Nós  Sim.

  5. Defina Forçar e Excluir Dados Locais como true.

  6. Clique em Salvar para atualizar o cluster.