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:
- v1.0: GA
- v0.1: Pré-visualizaçã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:
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.
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.
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.
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.