Como usar a ferramenta de migração CSI do StatefulSet

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.

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/v0.1/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:

  1. Faz um backup do StatefulSet e das dependências dele, como PersistentVolume, PersistentVolumeClaim e réplicas de pod no diretório de trabalho local.

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

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

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