Usar a ferramenta de migração de CSI StatefulSet

Este documento explica como usar a ferramenta de migração de CSI StatefulSet para migrar cargas de trabalho com estado de um plug-in de volume vSphere na árvore para o controlador de CSI vSphere no Google Distributed Cloud.

A lista seguinte mostra a fase de lançamento desta ferramenta por versão:

Versões do Google Distributed Cloud suportadas: 1.30 a 1.28.

Vista geral

O Google Distributed Cloud integra-se com sistemas de armazenamento de blocos ou ficheiros externos através do armazenamento VMware vSphere, dos plug-ins de volume no interior da árvore do Kubernetes (ou "controladores") e dos controladores da interface de armazenamento de contentores (CSI).

Com a funcionalidade de migração do CSI do Kubernetes ativada por predefinição na versão 1.15, um PersistentVolume suportado pelo plug-in de volume do vSphere no interior da árvore continua a funcionar num ambiente apenas de CSI. A funcionalidade de migração de CSI redireciona as chamadas de operação de plugins internos para o controlador de CSI. Uma vez que a especificação PersistentVolume é imutável, continua a ser suportada pelo plug-in interno. O conjunto de funcionalidades disponíveis é o mesmo que para o plug-in de volume na árvore.

O conjunto completo de funcionalidades da CSI, como a expansão de volume e a captura instantânea de volume, não está disponível para esses volumes. Para tirar partido destas funcionalidades, as cargas de trabalho com estado têm de ser totalmente migradas para o CSI através da recriação dos volumes persistentes suportados pelo controlador CSI do vSphere. Pode usar a ferramenta de migração de CSI para migrar cargas de trabalho com estado para CSI e usar o conjunto completo de funcionalidades de CSI.

Esta ferramenta oferece uma forma de migrar progressivamente o PersistentVolume e o PersistentVolumeClaim de um StatefulSet para o CSI e não envolve tempo de inatividade da aplicação. Estas ferramentas fazem a cópia de segurança dos recursos do Kubernetes num diretório local e definem ReclaimPolicy como Retain antes da migração. Assim, não vai haver perda de dados.

Limitação

  • As ferramentas automatizadas só são suportadas em versões do Google Distributed Cloud que são totalmente suportadas.

  • Só funciona com StatefulSets. Pode executar verificações prévias através da ferramenta para executar algumas verificações de segurança antes de usar as ferramentas.

./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 o seguinte:

  • ADMIN_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador.

  • USER_CLUSTER_NAME: se o StatefulSet estiver a ser executado no cluster de utilizadores, indique o nome do cluster de utilizadores. Ignore esta flag se a carga de trabalho estiver a ser executada no cluster de administrador.

  • STS_NAME: nome do StatefulSet.

  • STS_NAMESPACE: espaço de nomes do StatefulSet.

  • INTREE_STORAGECLASS: o nome StorageClass no tree que suporta o PersistentVolume do StatefulSet.

  • CSI_STORAGECLASS: o nome da StorageClass do CSI que suporta o PersistentVolume do StatefulSet após a migração.

Transferir

Transfira a ferramenta em gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool. Tenha em atenção que esta ferramenta está em pré-visualização.

Procedimento

Esta secção fornece os passos necessários para migrar o StatefulSet do vSphere in-tree vCP internal provisioner (kubernetes.io/vsphere-volume) para o vSphere CSI provisioner (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 o seguinte:

  • ADMIN_KUBECONFIG: o caminho do ficheiro kubeconfig do cluster de administrador.

  • USER_CLUSTER_NAME: se o StatefulSet estiver a ser executado no cluster de utilizadores, indique o nome do cluster de utilizadores. Ignore esta flag se a carga de trabalho estiver a ser executada no cluster de administrador.

  • STS_NAME: nome do StatefulSet.

  • STS_NAMESPACE: espaço de nomes do StatefulSet.

  • INTREE_STORAGECLASS: o nome StorageClass no tree que suporta o PersistentVolume do StatefulSet.

  • CSI_STORAGECLASS: o nome da StorageClass do CSI que suporta o PersistentVolume do StatefulSet após a migração.

  • WORKING_DIRECTORY: o diretório local para guardar a especificação do recurso Kubernetes do StatefulSet e o respetivo pod, PersistentVolumeClaim e PersistentVolume. O nome do diretório tem de ser exclusivo para cada StatefulSet. Este diretório deve estar vazio ou não existir. É ideal não criar este diretório para que as ferramentas possam criar um para si.

Este comando executa as seguintes tarefas:

  1. Faz uma cópia de segurança do StatefulSet e das respetivas dependências, como PersistentVolume, PersistentVolumeClaim e especificações de réplicas de pods, no diretório de trabalho local.

  2. Elimina o StatefulSet com a política de eliminação de órfãos. Este passo apenas elimina o StatefulSet, mas não elimina as respetivas dependências, como as réplicas de pods, o PersistentVolume e o PersistentVolumeClaim.

  3. Migra cada pod para controladores CSI (semelhante à opção 1) e faz o seguinte:

    a. Define o campo ReclaimPolicy do PersistentVolume como Retain.

    b. Elimina o pod, o PersistentVolume e o PersistentVolumeClaim.

    c. Converte o VMDK existente em FCD.

    d. Cria novamente o PersistentVolume, o PersistentVolumeClaim e o Pod.

  4. Recria o StatefulSet, mas o campo PVCTemplate na respetiva especificação aponta para o StorageClass do CSI. O controlador StatefulSet deve ser mapeado novamente para as réplicas órfãs.