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 o estágio de lançamento dessa ferramenta por versão:
- v1.0: GA
- v0.1: pré-lançamento
Versões do Google Distributed Cloud com suporte: 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.