En este documento, se explica cómo usar la herramienta de migración de CSI de StatefulSet para migrar cargas de trabajo con estado de un complemento de volumen de vSphere en el árbol al controlador de CSI de vSphere en Google Distributed Cloud.
En la siguiente lista, se muestra la etapa de lanzamiento de esta herramienta por versión:
- v1.0: GA
- v0.1: Versión preliminar
Versiones compatibles de Google Distributed Cloud: 1.30 a 1.28.
Descripción general
Google Distributed Cloud se integra a sistemas de almacenamiento de archivos o bloques externos mediante el almacenamiento VMware vSphere, complementos de volumen en el árbol de Kubernetes (o “controladores”) y controladores de Container Storage Interface (CSI).
Con la función de migración de CSI de Kubernetes habilitada de forma predeterminada en la versión 1.15, un PersistentVolume respaldado por el complemento de volumen de vSphere en el árbol sigue funcionando en un entorno de solo CSI. La función de migración de CSI redirecciona las llamadas de operación de complemento en el árbol al controlador de CSI. Debido a que la especificación de PersistentVolume es inmutable, el complemento en el árbol aún la respalda. El conjunto de funciones disponibles es el mismo que para el complemento de volumen en árbol.
El conjunto completo de funciones de CSI, como la expansión de volumen y la instantánea de volumen, no está disponible para esos volúmenes. Para aprovechar estas funciones, las cargas de trabajo con estado deben migrarse por completo a CSI recreando los PersistentVolumes respaldados por el controlador de CSI de vSphere. Puedes usar la herramienta de migración de CSI para migrar cargas de trabajo con estado a CSI y usar el conjunto completo de funciones de CSI.
Esta herramienta proporciona una forma de migrar de forma continua el PersistentVolume y el PersistentVolumeClaim de un StatefulSet a CSI y no implica tiempo de inactividad de la aplicación. Esta herramienta toma la copia de seguridad de los recursos de Kubernetes en un directorio local y establece ReclaimPolicy
en Retain
antes de la migración. Por lo tanto, no se perderán datos.
Limitación
Las herramientas automatizadas solo son compatibles con las versiones de Google Distributed Cloud que son compatibles por completo.
Solo funciona con StatefulSets. Puedes ejecutar verificaciones previas con la herramienta para realizar algunas verificaciones de seguridad antes de usarlas.
./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
Reemplaza lo siguiente:
ADMIN_KUBECONFIG
: la ruta de acceso al archivo kubeconfig del clúster de administradorUSER_CLUSTER_NAME
: Si el StatefulSet se ejecuta en el clúster de usuario, proporciona el nombre del clúster de usuario. Omite esta marca si la carga de trabajo se ejecuta en el clúster de administración.STS_NAME
: Es el nombre del StatefulSet.STS_NAMESPACE
: Es el espacio de nombres del StatefulSet.INTREE_STORAGECLASS
: Es el nombre de StorageClass en el árbol que respalda el PersistentVolume de StatefulSet.CSI_STORAGECLASS
: Es el nombre de la StorageClass de CSI que respalda el PersistentVolume del StatefulSet después de la migración.
Descarga
Descarga la herramienta en gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool
.
Ten en cuenta que esta herramienta está en versión preliminar.
Procedimiento
En esta sección, se proporcionan los pasos necesarios para migrar StatefulSet del aprovisionador interno vCP en el árbol de vSphere (kubernetes.io/vsphere-volume
) al aprovisionador CSI de 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
Reemplaza lo siguiente:
ADMIN_KUBECONFIG: la ruta de acceso al archivo kubeconfig del clúster de administrador
USER_CLUSTER_NAME: Si el StatefulSet se ejecuta en el clúster de usuario, proporciona el nombre del clúster de usuario. Omite esta marca si la carga de trabajo se ejecuta en el clúster de administración.
STS_NAME: Es el nombre del StatefulSet.
STS_NAMESPACE: Es el espacio de nombres del StatefulSet.
INTREE_STORAGECLASS: Es el nombre de StorageClass en el árbol que respalda el PersistentVolume de StatefulSet.
CSI_STORAGECLASS: Es el nombre de la StorageClass de CSI que respalda el PersistentVolume del StatefulSet después de la migración.
WORKING_DIRECTORY: Es el directorio local para guardar la especificación de recursos de Kubernetes de StatefulSet y su Pod, PersistentVolumeClaim y PersistentVolume. El nombre del directorio debe ser único para cada StatefulSet. Este directorio debe estar vacío o no existir. Lo ideal es no crear este directorio para que las herramientas puedan crear uno por ti.
Este comando realiza las siguientes tareas:
Crea una copia de seguridad del StatefulSet y sus dependencias, como PersistentVolume, PersistentVolumeClaim y las especificaciones de réplicas de Pod en el directorio de trabajo local.
Borra el StatefulSet con la política de eliminación huérfana. Este paso solo borra el StatefulSet, pero no borra sus dependencias, como las réplicas de Pod, PersistentVolume y PersistentVolumeClaim.
Migra cada Pod a los controladores de CSI (similar a la opción 1) y hace lo siguiente:
a. Establece el campo ReclaimPolicy de PersistentVolume como Retain.
b. Borra el Pod, el PersistentVolume y el PersistentVolumeClaim.
c. Convierte el VMDK existente en FCD.
d. Vuelve a crear el PersistentVolume, el PersistentVolumeClaim y el Pod.
Vuelve a crear el StatefulSet, pero el campo PVCTemplate en su especificación apunta a la StorageClass de CSI. El controlador de StatefulSet debería volver a asignarse a las réplicas huérfanas.