Usa la herramienta de migración de StatefulSet de CSI

En este documento, se explica cómo usar la herramienta de migración de CSI de StatefulSet para migrar cargas de trabajo con estado desde un complemento de volumen de vSphere en árbol al controlador de CSI de vSphere en GKE en VMware.

Descripción general

GKE en VMware se integra en sistemas de almacenamiento de archivos o bloques externos a través del almacenamiento de VMware vSphere, complementos de volumen de á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 1.15, un PersistentVolume respaldado por el complemento de volumen de vSphere en árbol continúa funcionando en un entorno solo CSI. La función de migración de CSI redirecciona las llamadas de operaciones del complemento de árbol al controlador de CSI. Debido a que la especificación de PersistentVolume es inmutable, todavía cuenta con el respaldo del complemento de árbol. El conjunto de funciones disponibles es el mismo que para el complemento de volumen de árbol.

El conjunto completo de funciones de CSI, como la expansión del 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 mediante la recreación de 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 progresivamente el PersistentVolume y 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 habrá pérdida de datos.

Limitación

  • Las herramientas automatizadas solo son compatibles con las versiones de GKE en VMware completamente compatibles.

  • Solo funciona con StatefulSets. Puedes ejecutar comprobaciones preliminares con la herramienta para ejecutar 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: Es la ruta de acceso del 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 administrador.

  • STS_NAME: Es el nombre del StatefulSet.

  • STS_NAMESPACE: Es el espacio de nombres del StatefulSet.

  • INTREE_STORAGECLASS: Es el nombre de la 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.

Descargar

Descarga la herramienta en gs://gke-on-prem-release/statefulset-csi-migration-tool/v0.1/statefulset-csi-migration-tool. Ten en cuenta que esta herramienta se encuentra en versión preliminar.

Procedimiento

En esta sección, se proporcionan los pasos necesarios para migrar StatefulSet del aprovisionador interno vCP 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: Es la ruta de acceso del 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 administrador.

  • STS_NAME: Es el nombre del StatefulSet.

  • STS_NAMESPACE: Es el espacio de nombres del StatefulSet.

  • INTREE_STORAGECLASS: Es el nombre de la 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:

  1. Realiza una copia de seguridad del StatefulSet y sus dependencias, como PersistentVolume, PersistentVolumeClaim y especificaciones de réplica de Pods en el directorio de trabajo local.

  2. Borra el StatefulSet con política de eliminación huérfana. En este paso, solo se borra el StatefulSet, pero no se borran sus dependencias, como las réplicas de Pods, PersistentVolume y PersistentVolumeClaim.

  3. Migra cada Pod a 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 la PersistentVolumeClaim.

    c. Convierte el VMDK existente en FCD.

    d. Vuelve a crear el PersistentVolume, la PersistentVolumeClaim y el Pod.

  4. Vuelve a crear el StatefulSet, pero el campo de 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.