Migra VMs a contenedores con Migrate to Containers

Last reviewed 2021-10-21 UTC

Este documento está dirigido a los arquitectos de la nube responsables de diseñar e implementar un plan de migración para cargas de trabajo basadas en máquinas virtuales a contenedores. Se proporciona orientación sobre el uso de Migrate to Containers para migrar las máquinas virtuales (VMs) de tu entorno de origen a contenedores que se ejecutan en Google Kubernetes Engine (GKE) o GKE Enterprise. Tu entorno de origen puede ejecutarse en un entorno local, en un entorno de hosting privado o en otra nube.

En este documento, se proporciona una descripción general de Migrate to Containers. También contiene aspectos importantes que debes tener en cuenta cuando planifiques una migración de VM a contenedores. Este documento pertenece a una serie de varias partes sobre la migración a Google Cloud. Si te interesa ver una descripción general de la serie, consulta Migración a Google Cloud: Elige tu ruta de migración.

Lee este documento si planeas migrar VMs que ejecutan un sistema operativo (SO) compatible, como Linux o Windows, desde un entorno de origen compatible a un entorno de GKE o GKE Enterprise con Migrate to Containers. Estos entornos de origen pueden incluir los siguientes elementos:

Migrate to Containers te permite colocar cargas de trabajo existentes basadas en VM en contenedores de GKE y GKE Enterprise, sin lo siguiente:

  • Solicitar acceso al código fuente
  • Reescribir tus cargas de trabajo
  • Alojar en contenedores las cargas de trabajo de forma manual

La migración de cargas de trabajo basadas en VM con Migrate to Containers proporciona los siguientes beneficios:

  • Un entorno alojado en contenedores, que incluye lo siguiente:
  • Densidad de carga de trabajo alta
  • Mecanismos de organización enriquecidos y administración de políticas
  • Canales de comunicación flexibles de servicio a servicio
  • Posibilidad usar canalizaciones de integración y de implementación continuas
  • Posibilidad de pasar de versiones de SO no compatibles
  • Posibilidad de iniciar el retiro de servicio de tu entorno basado en VM

Migrar cargas de trabajo basadas en VM a contenedores con Migrate to Containers es uno de los posibles pasos del recorrido de modernización de tus cargas de trabajo. Migrar cargas de trabajo basadas en VM con Migrate to Containers te ayuda a evitar las reescrituras costosas que se necesitan para modernizar esas cargas de trabajo. Sin embargo, no los transforma en cargas de trabajo diseñadas para ejecutarse en un entorno de nube.

Los candidatos ideales para la migración incluyen los siguientes:

  • Cargas de trabajo en las que la modernización mediante una reescritura completa es imposible o demasiado costosa
  • Cargas de trabajo con dependencias desconocidas que podrían romperse si se tocan
  • Cargas de trabajo que se mantienen, pero no se desarrollan de forma activa
  • Cargas de trabajo que ya no se mantienen
  • Cargas de trabajo sin acceso al código fuente

Puedes interactuar con Migrate to Containers de varias maneras. Por ejemplo, se puede acceder a esta solución a través de la consola de Google Cloud. Si necesitas automatizar el proceso de migración y, luego, integrarlo a tu cadena de herramientas existente, puedes usar la interfaz de línea de comandos y las Definiciones de recursos personalizados (CRD) de Kubernetes de Migrate to Containers.

Para obtener más información sobre las interfaces de Migrate to Containers, consulta API y referencia | Migrate to Containers

En este documento, suponemos que leíste los siguientes documentos y los conoces:

Diseña la migración a Google Cloud

Para migrar las VM de tu entorno de origen a contenedores que se ejecutan en Google Cloud, te recomendamos que sigas el framework descrito en la serie de Migración a Google Cloud.

En el siguiente diagrama, se ilustra la ruta del recorrido de tu migración:

Ruta de migración con cuatro fases

El framework que se ilustra en el diagrama anterior consta de las siguientes cuatro fases:

  1. Evaluación. En esta fase, debes evaluar tu entorno de origen, examinar las cargas de trabajo que deseas migrar a Google Cloud y evaluar qué VM son compatibles con cada una de ellas.
  2. Planificación. En esta fase, debes crear la infraestructura básica de Migrate to Containers. Para ello, tienes que aprovisionar la jerarquía de recursos y configurar el acceso a la red.
  3. Implementación. En esta fase, debes migrar las VMs del entorno de origen a GKE o GKE Enterprise con Migrate to Containers.
  4. Optimización. En esta fase, debes comenzar a aprovechar las tecnologías y capacidades de la nube.

Evalúa el entorno de origen y las cargas de trabajo

En la fase de evaluación, debes recopilar información sobre tu entorno de origen y las cargas de trabajo basadas en VM que deseas migrar. Esto te ayuda a dimensionar correctamente los recursos que necesitas, tanto para la migración como para tu entorno de destino.

En la fase de evaluación, debes realizar las siguientes tareas:

  1. Crea un inventario completo de tus aplicaciones.
  2. Cataloga tus aplicaciones según sus propiedades y dependencias.
  3. Capacita y educa a tus equipos en Google Cloud.
  4. Compila un experimento y una prueba de concepto en Google Cloud.
  5. Calcula el costo total de propiedad (TCO) del entorno de destino.
  6. Elige las cargas de trabajo que deseas migrar primero.

Las siguientes secciones se basan en la información dentro de la migración a Google Cloud: evalúa y descubre tus cargas de trabajo. Sin embargo, proporcionan información específica para evaluar las cargas de trabajo basadas en VM que deseas migrar a contenedores con Migrate to Containers.

Compila tus inventarios

Para determinar el alcance de tu migración, debes comprender tu entorno actual basado en VM. Para comprender el entorno, recopila información sobre las cargas de trabajo y sus dependencias.

En Compila un inventario de tus apps, se describe cómo compilar un inventario de las cargas de trabajo en tu entorno basado en VM y sus dependencias. Sigue esa guía y crea tus inventarios antes de continuar con este documento.

Después de compilar un inventario de las cargas de trabajo y sus dependencias, debes definir mejor el inventario. Evalúa los aspectos y las funciones que le interesan a tu organización cuando migre las cargas de trabajo basadas en VM con Migrate to Containers.

Para completar el inventario de tus cargas de trabajo, considera lo siguiente:

  • Entorno de origen Migrate to Containers admite la migración de VMs desde diferentes entornos de origen:

    • Compute Engine
    • VMware vSphere
    • VM de Microsoft Azure
    • Amazon EC2

    Para configurar de forma correcta Migrate to Containers, de modo que pueda migrar tus cargas de trabajo, debes evaluar el entorno de origen.

  • Sistema operativo que se ejecuta en tus VMs: Recopila información sobre los sistemas operativos que se ejecutan en tus VMs y sus licencias, y asegúrate de que los sistemas operativos sean compatibles con Migrate to Containers. Si ejecutas un SO que no es compatible con Migrate to Containers, te recomendamos actualizar a una versión compatible o cambiar el SO a uno que sea compatible con Migrate to Containers. .

  • Cargas de trabajo en tus VM: Evalúa qué cargas de trabajo se implementan en cada VM. Luego, asigna las dependencias entre tus cargas de trabajo y entre las cargas de trabajo y los servicios externos. A continuación, recopila información sobre las fuentes de configuración de tus cargas de trabajo. Por ejemplo, ¿usas variables de entorno, un sistema de configuración distribuido o servidores de metadatos para configurar de forma dinámica las cargas de trabajo? Además, evalúa cómo las cargas de trabajo envían información al sistema de registro.

  • Puntuación de aptitud de Migrate to Containers: Evalúa si las cargas de trabajo son adecuadas para migrar con Migrate to Containers. Migrate to Containers proporciona una herramienta de evaluación de aptitud para Linux y Windows que puedes ejecutar en las VMs a fin de calcular una puntuación de aptitud. Una puntuación baja indica que hay problemas que debes resolver antes de migrar las cargas de trabajo. Por ejemplo, si habilitaste Linux con seguridad mejorada en tus VM, es posible que necesites realizar un esfuerzo adicional para mitigar esta dependencia antes de migrarlas.

  • Servicios de red: Recopila información sobre la configuración de tus servicios de red y cómo las cargas de trabajo basadas en VM usan estos servicios. Por ejemplo, evalúa cómo usan tus cargas de trabajo el sistema de nombres de dominio (DNS), la multidifusión de DNS, los archivos host y otros mecanismos de descubrimiento de servicios a fin de determinar la ubicación de otras cargas de trabajo y servicios. A continuación, evalúa el archivo host de cada VM en busca de cualquier entrada personalizada que necesiten tus cargas de trabajo. Para obtener más información sobre los archivos hosts, consulta Verifica y valida los recursos y descriptores generados.

  • Dependencias de hardware: Evalúa cualquier tipo de hardware que uses en tu entorno basado en VM, como dispositivos de almacenamiento de alto rendimiento, GPU y TPUo dispositivos de red.

  • Cargas de trabajo sin estado y con estado: Las cargas de trabajo sin estado no almacenan el estado en el clúster ni en el almacenamiento persistente. Las carga de trabajo con estado guardan los datos para usarlos más adelante. Debido a que la migración de cargas de trabajo con estado suele ser más difícil que migrar cargas de trabajo sin estado, evalúa qué cargas de trabajo no tienen estado y cuáles sí lo tienen.

  • Almacenamiento: Para las cargas de trabajo con estado, crea una lista de los requisitos de almacenamiento. Estos son algunos aspectos que debes tener en cuenta cuando crees una lista:

    • Tipo de sistema de almacenamiento (volúmenes de bloques, almacenamiento de archivos o almacenamiento de objetos)
    • Tamaño del sistema de almacenamiento
    • Acceso de la carga de trabajo al sistema de almacenamiento

      • Por ejemplo, ¿tus cargas de trabajo usan el sistema de archivos de red (NFS) o el bloque de mensajes de servidor (SMB) para acceder a los archivos mediante una red?
      • Por ejemplo, ¿las VM ejecutan servidores NFS o SMB?

        Si tus VM ejecutan servidores NFS en modo de kernel, debes esforzarte más por migrar esos servidores. Puedes migrar esos servidores a otro entorno de ejecución, como Compute Engine o GKE. O bien, puedes migrar datos a Filestore, que es un servicio de almacenamiento conectado a la red completamente administrado.

    • Configuración del disco:

      • Evalúa la configuración de todos los discos, las particiones de datos, los volúmenes en las VM y las funciones de seguridad y confidencialidad de cada una.
  • Localidad de datos: La localidad de los datos afecta el rendimiento de las cargas de trabajo con estado. La distancia y la conectividad entre tus sistemas externos y tu entorno afectan la latencia. Para cada sistema de almacenamiento de datos externo, ten en cuenta los requisitos de rendimiento y disponibilidad que debe cumplir.

Completa la evaluación

Después de compilar los inventarios relacionados con tu entorno y tus cargas de trabajo basadas en VM, completa el resto de las actividades de la fase de evaluación documentadas en Migración a Google Cloud: evalúa y descubre tus cargas de trabajo. Cuando hayas terminado con ese trabajo, continúa leyendo este documento.

Planifica y compila tu base

En la fase de planificación y compilación, aprovisionarás y configurarás la infraestructura de nube y los servicios compatibles con tus cargas de trabajo en Google Cloud:

  1. Compila una jerarquía de recursos.
  2. Configura la administración de identidades y accesos
  3. Configura la facturación.
  4. Configura la conectividad de red.
  5. Endurece tu seguridad.
  6. Configura la supervisión y las alertas.

Si deseas obtener orientación para compilar la infraestructura de nube y los servicios compatibles con tus cargas de trabajo y sus dependencias, consulta Migración a Google Cloud: construye tu base. Sigue estos lineamientos a fin de crear una base para tus entornos. Cuando termines con ese trabajo, continúa leyendo este documento.

Después de seguir las instrucciones en “Migración a Google Cloud: construye tu base”, completa el trabajo de base configurando Migrate to Containers:

  1. Confirma que las cargas de trabajo y el entorno de origen cumplan con los requisitos de Migrate to Containers.
  2. Habilita las API de Cloud para Migrate to Containers.
  3. Aprovisiona las cuentas de servicio que Migrate to Containers usa para acceder a los recursos del entorno de destino.
  4. Si migras tus cargas de trabajo a clústeres de GKE o GKE en Google Cloud, configura Migrate to Virtual Machines.
  5. Configura un clúster de procesamiento de Migrate to Containers. Un clúster de procesamiento de Migrate to Containers ejecuta los componentes de Migrate to Containers durante la migración.
  6. Instala y configura Migrate to Containers en el clúster de procesamiento.

En el artículo “Configura Migrate to Containers” que se mencionó antes, se describe cómo aprovisionar y configurar Migrate to Containers y sus dependencias. Sigue esa guía para configurar Migrate to Containers

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Migra tus cargas de trabajo basadas en VM a contenedores

En la fase de implementación, usa los siguientes eventos importantes para guiarte a medida que migras las VMs de tu entorno de origen a los contenedores que se ejecutan en GKE o GKE Enterprise:

  1. Genera y revisa planes de migración.
  2. Genera artefactos de contenedor y descriptores de implementación.
  3. Verifica, valida y personaliza los descriptores de recursos que Migrate to Containers generó.
  4. Implementa y valida las cargas de trabajo alojadas en contenedores en GKE o GKE Enterprise.
  5. Desinstala Migrate to Containers.

Si deseas obtener más información sobre los pasos necesarios para migrar las VM con Migrate to Containers, consulta Ejecuta una migración.

Genera y revisa el plan de migración

Crea un plan de migración de Migrate to Containers para tus cargas de trabajo basadas en VM:

  1. Configura los entornos de origen como fuentes de migración de Migrate to Containers. Para migrar las cargas de trabajo basadas en VM, Migrate to Containers necesita información sobre los entornos de origen en los que se ejecutan las VMs en este momento. Para recopilar esa información, realiza las tareas descritas en la sección Compila tus inventarios en este documento. Para obtener más información sobre la configuración de tus entornos de origen, consulta Agrega una fuente de migración (Linux) y Agrega una fuente de migración (Windows).
  2. Crea planes de migración. Para especificar qué cargas de trabajo basadas en VM deseas migrar de un entorno de origen a un entorno de destino compatible, crea un plan de migración. Por ejemplo, puedes configurar el lugar en el que deseas almacenar tus datos persistentes. Para obtener más información sobre la creación y la supervisión de los planes de migración, consulta Crea una migración (Linux) y Crea una migración (Windows).
  3. Revisa y personaliza los planes de migración. Después de generar planes de migración para cada una de las cargas de trabajo basadas en VM que deseas migrar, te recomendamos que revises y personalices cada plan de migración a fin de asegurarte de que se adapta a tus necesidades. Para obtener más información sobre la personalización de planes de migración, consulta Personaliza un plan de migración (Linux) y Personaliza un plan de migración (Windows).

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Genera artefactos de contenedor y descriptores de implementación

A fin de generar los artefactos del contenedor de destino para tus cargas de trabajo, Migrate to Containers crea una imagen de contenedor que contiene la carga de trabajo y los datos extraídos de la VM en el plan de migración. Luego, almacena una copia de la imagen de contenedor en el repositorio de imágenes de contenedor configurado. Migrate to Containers también genera descriptores de implementación que puedes personalizar y usar para implementar instancias de las imágenes de contenedor en el entorno de destino.

Si deseas obtener más información para generar artefactos de contenedor, consulta Ejecuta una migración (Linux) y Ejecuta una migración (Windows).

Puedes supervisar el progreso de los artefactos del contenedor que creas y migras. Para obtener más información sobre la supervisión de una migración, consulta Supervisa una migración (Linux) y Supervisa una migración (Windows).

Si generas artefactos de contenedor para cargas de trabajo de Windows, usa los artefactos y los descriptores de implementación que Migrate to Containers generó a fin de compilar imágenes de contenedor de Windows para esas cargas de trabajo. Si deseas obtener más información a fin de compilar imágenes de contenedores de Windows para tus cargas de trabajo, consulta Compila una imagen de contenedor de Windows.

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Verifica y valida los descriptores y recursos generados

Después de generar artefactos de contenedor y descriptores de implementación con Migrate to Containers, revisa y actualiza esos artefactos y descriptores para asegurarte de que cumplan con tus requisitos. El tiempo necesario para actualizar los artefactos de contenedor y los descriptores de implementación depende de la cantidad de cargas de trabajo basadas en VM que migres y de la complejidad. Si deseas obtener más información para revisar artefactos de contenedores y descriptores de implementación, consulta Revisa los archivos de implementación generados (Linux) yCompilar una imagen de contenedor de Windows. Por ejemplo, considera los siguientes aspectos.

Asigna nombres a recursos y descriptores

Recursos y descriptores de configuración y registro

Descriptores y recursos de políticas y perfiles

  • Listas de control de acceso (LCA) para las cargas de trabajo de Windows: Debido a que los contenedores de Windows no admiten la configuración de las LCA cuando se compilan imágenes de contenedor de Windows, Migrate to Containers no migra LCA de Windows personalizadas. Si necesitas personalizar las cargas de trabajo de Windows, consulta Establece LCA.
  • Perfiles de AppArmor: Asegúrate de que todos los perfiles de AppArmor que requieren tus cargas de trabajo estén disponibles en el entorno de destino. De lo contrario, Es posible que las cargas de trabajo migradas no se inicien.
  • Políticas de red: Si necesitas restringir el acceso a los Pods que ejecutan las cargas de trabajo, puedes usar NetworkPolicies para controlar el flujo de tráfico desde y hacia tus Pods.

Otros recursos y descriptores

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Implementa y valida las cargas de trabajo alojadas en contenedores

Cuando los descriptores de implementación para tus cargas de trabajo estén listos, sigue estos pasos:

  1. Implementa tus cargas de trabajo en el entorno de destino. Si deseas obtener asesoramiento para implementar las cargas de trabajo de Linux y Windows migradas, consulta Implementa una carga de trabajo de Linux en un clúster de destino y Implementa una carga de trabajo de Windows en un clúster de destino.
  2. Supervisa tus cargas de trabajo migradas. Después de implementar las cargas de trabajo de Linux y Windows migradas, puedes recopilar información sobre su rendimiento. Para obtener más información, consulta Supervisa las cargas de trabajo migradas (Linux) y Supervisa las cargas de trabajo migradas (Windows).

  3. Integra tus cargas de trabajo migradas. Una vez que las cargas de trabajo que implementaste en el entorno de destino funcionen, intégralas. Integra los procesos de generación y de implementación de artefactos de contenedor de las cargas de trabajo en las canalizaciones y los procesos de implementación. Si en este momento no tienes un proceso de implementación automatizado e implementas tus cargas de trabajo de forma manual, se recomienda que migres de implementaciones manuales a implementaciones automatizadas..

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Desinstala Migrate to Containers

Después de completar la migración de tus cargas de trabajo con Migrate to Containers, te recomendamos hacer lo siguiente:

  1. Asegúrate de tener todas las referencias a los artefactos que Migrate to Containers generó durante la migración.
  2. Desinstala Migrate to Containers.

Cuando termines el trabajo descrito en esta sección, regresa a este documento.

Optimiza tu entorno después de la migración

Optimizar tu entorno es la última fase de la migración. Para optimizar tu entorno de GKE y GKE Enterprise, consulta Optimiza tu entorno.

¿Qué sigue?