Usa la herramienta de migración CSI de StatefulSet

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 Google Distributed Cloud.

Descripción general

Google Distributed Cloud se integra en sistemas de almacenamiento de archivos o bloques externos a través del almacenamiento de VMware vSphere, de complementos de volumen en el árbol de Kubernetes (o “controladores”) y de los 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 árbol continúa funcionando en un entorno de solo CSI. La función de migración de CSI redirecciona las llamadas de operación del complemento de árbol al controlador de CSI. Debido a que la especificación de PersistentVolume es inmutable, todavía está respaldada por el complemento de árbol. El conjunto de funciones disponibles es el mismo que el del complemento de volumen de árbol.

El conjunto completo de funciones de CSI, como la expansión del volumen y la instantánea del volumen, no está disponible para esos volúmenes. Para aprovechar estas funciones, las cargas de trabajo con estado deben migrarse por completo a CSI. Para ello, se deben volver a crear 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 manera progresiva 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 que no habrá pérdida de datos.

Limitación

  • Las herramientas automatizadas solo son compatibles con las versiones de Google Distributed Cloud que son totalmente compatibles.

  • Solo funciona con StatefulSets. Puedes ejecutar comprobaciones preliminares con la herramienta para ejecutar algunas verificaciones de seguridad antes de usar las herramientas.

./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 del 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 está en vista previa.

Procedimiento

En esta sección, se proporcionan los pasos necesarios para migrar StatefulSet del aprovisionador interno vCP de vSphere en árbol (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 del 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 debe 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 las especificaciones de PersistentVolume, PersistentVolumeClaim y réplica de Pod en el directorio de trabajo local.

  2. Borra la política de eliminación de StatefulSet con huérfanos. Este paso solo borra el StatefulSet, pero no sus dependencias, como las réplicas de Pod, 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, PersistentVolume y 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 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.