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 GKE no VMware.
Visão geral
O GKE no VMware se integra a sistemas externos de armazenamento em blocos ou arquivos por meio do armazenamento do 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, um PersistentVolume respaldado pelo plug-in de volume do vSphere em árvore continua funcionando em um ambiente somente CSI. O recurso de migração CSI redireciona as chamadas de operação de plug-in em árvore para o driver CSI. Como a especificação do 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 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 completamente migradas para o CSI, recriando os PersistentVolumes com suporte do driver CSI do vSphere. É possível usar a ferramenta de migração CSI para migrar cargas de trabalho com estado para o CSI e usar o conjunto completo de recursos CSI.
Essa ferramenta oferece uma maneira de migrar gradualmente o PersistentVolume e o
PersistentVolumeClaim de um StatefulSet para o CSI e não envolve o tempo de 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 haverá perda de dados.
Limitação
As ferramentas automatizadas são compatíveis apenas com as versões do GKE no VMware que são totalmente compatíveis.
Ele só funciona com o StatefulSets. É possível executar verificações de simulação com 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. 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 dá suporte ao PersistentVolume do StatefulSet.CSI_STORAGECLASS
: o nome do StorageClass CSI de apoio ao 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
.
Essa ferramenta está em pré-lançamento.
Procedimento
Nesta seção, apresentamos as etapas necessárias para migrar o StatefulSet do provisionador interno vCP em árvore do vSphere (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. 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 dá suporte ao PersistentVolume do StatefulSet.
CSI_STORAGECLASS: o nome do StorageClass CSI de apoio ao 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 pod, PersistentVolumeClaim e PersistentVolume. O nome do diretório precisa ser exclusivo 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 um para você.
Esse comando executa as seguintes tarefas:
Faz um backup do StatefulSet e das respectivas dependências, como as especificações de PersistentVolume, PersistentVolumeClaim e réplica 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 as dependências dele, como as réplicas de pod, o PersistentVolume e o 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 atual 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 CSI StorageClass. O controlador StatefulSet precisa mapear para as réplicas órfãs novamente.