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 driver CSI do vSphere no Google Distributed Cloud.
Visão geral
O Google Distributed Cloud se integra a sistemas externos de armazenamento de 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 de CSI do Kubernetes ativado por padrão na versão 1.15, um PersistentVolume apoiado pelo plug-in de volume vSphere em árvore continua funcionando em um ambiente somente CSI. O recurso de migração de CSI redireciona as chamadas de operação de plug-in em árvore para o driver do CSI. Como a especificação PersistentVolume é imutável, ela ainda é apoiada pelo plug-in em árvore. O conjunto de recursos disponíveis é o mesmo do plug-in de volume em árvore.
O conjunto completo de recursos 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 completamente migradas para o CSI recriando os PersistentVolumes apoiados pelo driver CSI do vSphere. É possível usar a ferramenta de migração do CSI para migrar cargas de trabalho com estado para o CSI e usar o conjunto completo de recursos da CSI.
Essa ferramenta fornece uma maneira de fazer a migração gradual do PersistentVolume e
do PersistentVolumeClaim de um StatefulSet para CSI e não envolve inatividade do aplicativo. Essa
ferramenta usa o backup dos recursos do Kubernetes em um diretório local e define
ReclaimPolicy
como Retain
antes da migração. Assim, não vai haver perda de dados.
Limitação
As ferramentas automatizadas só são compatíveis com versões do Google Distributed Cloud que são totalmente compatíveis.
Ele só funciona com StatefulSets. É possível executar verificações de simulação usando a 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:
ADMIN_KUBECONFIG
: o caminho do arquivo kubeconfig do cluster de administrador.USER_CLUSTER_NAME
: se o StatefulSet estiver em execução no cluster de usuário, forneça o nome do cluster de usuário. 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 nome do StorageClass na árvore que apoia o PersistentVolume do StatefulSet.CSI_STORAGECLASS
: o nome do StorageClass do CSI que apoia o PersistentVolume do StatefulSet após a migração.
Fazer o download
Faça o download da ferramenta em gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool
.
Esta ferramenta está em pré-lançamento.
Procedimento
Nesta seção, apresentamos as etapas necessárias para migrar o StatefulSet do provisionador interno vCP do vSphere em árvore (kubernetes.io/vsphere-volume
) para o provisionador CSI do vSphere (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 estiver em execução no cluster de usuário, forneça o nome do cluster de usuário. 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 nome do StorageClass na árvore que apoia o PersistentVolume do StatefulSet.
CSI_STORAGECLASS: o nome do StorageClass do CSI que apoia o PersistentVolume do StatefulSet após a migração.
WORKING_DIRECTORY: o diretório local para salvar a especificação de recursos do Kubernetes do StatefulSet e do respectivo pod, PersistentVolumeClaim e PersistentVolume. O nome do diretório precisa ser exclusivo para cada StatefulSet. O diretório precisa estar vazio ou não existir. O ideal é não criar esse diretório para que as ferramentas possam criar um para você.
Esse comando executa as seguintes tarefas:
Faz um backup do StatefulSet e das dependências dele, como PersistentVolume, PersistentVolumeClaim e especificações de réplica de pod no diretório de trabalho local.
Exclui o StatefulSet com política de exclusão de órfãos. Essa etapa exclui apenas o StatefulSet, mas não exclui as dependências dele, como as réplicas de pod, PersistentVolume e PersistentVolumeClaim.
Migra cada pod para drivers CSI (semelhante à opção 1) e faz o seguinte:
a. Define o campo ReclaimPolicy do PersistentVolume como "Retain".
b. Exclui o pod, o PersistentVolume e o PersistentVolumeClaim.
c) Converte o VMDK existente em FCD.
d) Cria o PersistentVolume, o PersistentVolumeClaim e o pod novamente.
Recria o StatefulSet, mas o campo PVCTemplate na especificação aponta para o StorageClass CSI. O controlador StatefulSet deve mapear novamente para as réplicas órfãs.