Neste documento, explicamos como usar a ferramenta de migração CSI do StatefulSet para migrar cargas de trabalho com estado de um plug-in de volume do vSphere em árvore para o vSphere Driver CSI no Google Distributed Cloud.
A lista a seguir mostra a fase de lançamento dessa ferramenta por versão:
- v1.0: GA
- v0.1: pré-lançamento
Versões compatíveis do Google Distributed Cloud: 1.30 a 1.28.
Visão geral
O Google Distributed Cloud integra-se a sistemas externos de armazenamento em blocos ou arquivos por meio do armazenamento VMware vSphere, plug-ins de volume em árvore do Kubernetes (ou "drivers") e drivers do Container Storage Interface (CSI).
Com o recurso de migração CSI do Kubernetes ativado por padrão na versão 1.15, uma O PersistentVolume com suporte do plug-in de volume do vSphere em árvore continua em um ambiente somente CSI. O recurso de migração CSI redireciona de operação do plug-in em árvore para o driver CSI. Como o PersistentVolume não é imutável, mas ainda é compatível com o plug-in em árvore. O conjunto de recursos disponíveis é o mesmo do plug-in de volume em árvore.
O conjunto completo de recursos de CSI, como expansão de volume e snapshot de volume, não está disponível para esses volumes. Para aproveitar esses recursos, as cargas de trabalho com estado precisam ser totalmente migradas para o CSI, recriando o PersistentVolumes com suporte do driver CSI do vSphere. Use o Ferramenta de migração de CSI para migrar cargas de trabalho com estado para CSI e usar o conjunto completo de recursos CSI.
Essa ferramenta oferece uma maneira de migrar gradualmente o PersistentVolume de um StatefulSet e
PersistentVolumeClaim para CSI e não envolve inatividade do aplicativo. Esta
ferramentas pega o backup de recursos do Kubernetes em um diretório local e define
ReclaimPolicy para Retain antes da migração. Assim, não haverá perda de dados.
Limitação
- As ferramentas automatizadas são compatíveis apenas com as versões do Google Distributed Cloud que têm suporte total. 
- Ele só funciona com o StatefulSets. É possível executar verificações de simulação usando fazer algumas confirmações de segurança antes de usar a ferramenta. 
./statefulset-csi-migration-tool preflight \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS
Substitua:
- ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador.
- USER_CLUSTER_NAME: se o StatefulSet for em execução no cluster de usuário e, em seguida, dê o nome dele. Pule essa sinalização se a carga de trabalho estiver em execução no cluster de administrador.
- STS_NAME: nome do StatefulSet.
- STS_NAMESPACE: namespace do StatefulSet.
- INTREE_STORAGECLASS: o StorageClass na árvore que dá suporte ao PersistentVolume do StatefulSet.
- CSI_STORAGECLASS: o StorageClass CSI nome que dá suporte ao PersistentVolume do StatefulSet após a migração.
Fazer o download
Faça download da ferramenta em
 gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool:
 Essa ferramenta está em pré-lançamento.
Procedimento
Nesta seção, apresentamos as etapas necessárias para migrar o StatefulSet do vSphere
Provisionador interno do vCP na árvore (kubernetes.io/vsphere-volume) para o vSphere
Provisionador da vCP (csi.vsphere.vmware.com).
./statefulset-csi-migration-tool rolling-migration all \
      --kubeconfig ADMIN_KUBECONFIG \
      --cluster-name USER_CLUSTER_NAME \
      --sts-name STS_NAME \
      --sts-namespace STS_NAMESPACE \
      --intree-storageclass INTREE_STORAGECLASS \
      --csi-storageclass CSI_STORAGECLASS \
      --working-directory WORKING_DIRECTORY
Substitua:
- ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador. 
- USER_CLUSTER_NAME: se o StatefulSet for em execução no cluster de usuário e, em seguida, dê o nome dele. Pule essa sinalização se a carga de trabalho estiver em execução no cluster de administrador. 
- STS_NAME: nome do StatefulSet. 
- STS_NAMESPACE: namespace do StatefulSet. 
- INTREE_STORAGECLASS: o StorageClass na árvore que dá suporte ao PersistentVolume do StatefulSet. 
- CSI_STORAGECLASS: o StorageClass CSI nome de apoio ao PersistentVolume do StatefulSet após a migração. 
- WORKING_DIRECTORY: o diretório local de salvar a especificação de recursos do Kubernetes do StatefulSet e do pod dele; PersistentVolumeClaim e PersistentVolume. O nome do diretório precisa ser exclusivos para cada StatefulSet. Este diretório precisa estar vazio ou inexistente. O ideal é não criar esse diretório para que as ferramentas possam criar uma para você. 
Esse comando executa as seguintes tarefas:
- Faz um backup do StatefulSet e das dependências dele, como PersistentVolume, PersistentVolumeClaim e réplicas de pod no diretório de trabalho local. 
- Exclui o StatefulSet com política de exclusão de órfãos. Esta etapa exclui apenas o StatefulSet, mas não exclui as dependências dele, como as réplicas do pod, PersistentVolume e PersistentVolumeClaim. 
- Migra cada pod para drivers CSI (semelhante à Opção 1), e o seguindo: - a. Define o campo ReclaimPolicy do PersistentVolume como Retain. - b. Exclui o pod, o PersistentVolume e o PersistentVolumeClaim. - c. Converte o VMDK atual em FCD. - d. Cria o PersistentVolume, o PersistentVolumeClaim e o pod de novo. 
- Recria o StatefulSet, mas o campo PVCTemplate na especificação aponta para o StorageClass CSI. O controlador StatefulSet deve mapear para o órfão réplicas novamente.