En 2023, Broadcom adquirió VMware y anunció inmediatamente el fin de las licencias perpetuas, la eliminación de la versión gratuita de ESXi y el cambio a un modelo de suscripción. Esta decisión provocó un aumento de los costes del 100-300 % para muchas empresas de todo el mundo, lo que les llevó a buscar nuevas alternativas.
Por parte de Davidson, hemos decidido lanzar una prueba piloto con la solución KVM, una solución de virtualización de código abierto, para nuestra plataforma de contenedorización OKD (Openshift).
Elegir una plataforma de código abierto ofrece muchas ventajas, como la ausencia de costes de licencia, la autonomía con respecto a los proveedores propietarios y la libertad de uso
¿Qué es OKD?
En el mundo de la contenedorización, OKD (OpenShift) es una plataforma de orquestación de contenedores diseñada para acelerar el desarrollo, la implementación y el escalado de las aplicaciones. Permite a los desarrolladores y equipos operativos gestionar eficazmente el ciclo de vida de las aplicaciones a largo plazo.
OKD y OpenShift: ¿cuál es la diferencia?
Según la documentación de Red Hat, OKD es la base de OpenShift. Conocido originalmente como OpenShift Origin, OKD ahora es reconocido como «un proyecto comunitario que incluye componentes de software que funcionan sobre Kubernetes». En otras palabras, OKD es la versión comunitaria de OpenShift.
OKD en la DSI de Davidson
El equipo de YODA gestiona unas cincuenta aplicaciones internas para Davidson. La mayoría de estas aplicaciones están alojadas en la plataforma OKD, Que se utiliza para simplificar el desarrollo, la implementación y la gestión de estas aplicaciones basadas en contenedores.
Objetivo del POC
Actualmente, en YODA utilizamos OKD junto con VMware vSphere, una solución de virtualización, para implementar, ejecutar y gestionar el ciclo de vida de nuestras aplicaciones. VMware es uno de los líderes en virtualización, con el hipervisor ESXi y la plataforma vSphere. Sin embargo, estas soluciones requieren licencias de pago. El objetivo de nuestra prueba de concepto (POC) es encontrar y evaluar una alternativa de virtualización optimizada para OKD. Esta alternativa debe ofrecer un coste total de propiedad reducido y, al mismo tiempo, ser tan potente, eficiente, sencilla, estable y segura como VMware.
Comparación entre KVM y VMware para virtualización
- Arquitectura
El KVM funciona como un módulo del núcleo Linux, lo que significa que está estrechamente integrado con el sistema operativo del host. Los equipos virtuales KVM se gestionan como procesos normales de Linux, lo que permite la compatibilidad con todas las herramientas estándar de Linux y una gestión sencilla a través de los comandos del sistema.
Por el contrario, VMware ESXi es un hipervisor de tipo 1 que funciona directamente en el hardware, sin intermediarios. Esto minimiza la carga del sistema host y ofrece un gran aislamiento entre los equipos virtuales, lo que reduce el riesgo de conflictos.
- Rendimiento
KVM ofrece un rendimiento excelente gracias a su proximidad al núcleo Linux y al uso eficaz de las extensiones de virtualización de hardware. Sin embargo, la necesidad de un sistema operativo host puede introducir una ligera sobrecarga.
VMware, con ESXi, suele ofrecer un rendimiento superior, ya que funciona directamente en el hardware. Esta arquitectura minimiza la latencia y maximiza la eficiencia, lo que es crucial para los entornos que requieren un rendimiento puntero.
- Gestión y administración
KVM utiliza herramientas como libvirt, virt-manager y otras interfaces CLI para la gestión de máquinas virtuales. Estas herramientas, aunque potentes, pueden requerir una curva de aprendizaje y ser menos fáciles de usar que las interfaces gráficas modernas.
VMware ofrece soluciones de gestión sofisticadas y bien diseñadas, como vCenter, que facilitan la gestión centralizada de entornos de virtualización a gran escala. Estas herramientas ofrecen capacidades avanzadas para la automatización, la supervisión y la orquestación.
- Escalabilidad y resiliencia
KVM puede evolucionar de forma eficaz para satisfacer las necesidades crecientes con funciones como la migración en directo de los equipos virtuales. Sin embargo, la configuración avanzada para entornos muy grandes puede requerir un esfuerzo adicional.
VMware es conocido por su capacidad de escalar fácilmente y gestionar entornos complejos. Funciones como alta disponibilidad (HA), tolerancia a fallos y agrupación en clústeres están integradas, lo que lo convierte en una opción ideal para escenarios críticos en los que la resiliencia es esencial.
- Seguridad
KVM se beneficia de la seguridad inherente al sistema Linux, con funciones como SELinux y AppArmor que añaden capas adicionales de protección. Sin embargo, la seguridad depende en gran medida de la configuración y la gestión del entorno de host.
VMware ofrece soluciones de seguridad robustas e integradas, como VMware NSX para la virtualización de la seguridad de red. Los entornos de VMware suelen estar certificados para cumplir con altos estándares de seguridad, lo que es una ventaja para las empresas que necesitan una mayor seguridad.
- Coste
Como KVM es de código abierto, suele ser menos costoso que las soluciones comerciales. No hay costes de licencia para el uso de KVM, lo que lo convierte en una opción atractiva para organizaciones con presupuestos limitados. Los costes asociados son principalmente de soporte y gestión.
Aunque VMware es más caro, ofrece una gama de funciones y servicios que a menudo justifican la inversión. Los costes incluyen licencias para el hipervisor ESXi, vCenter para la gestión centralizada y otros módulos complementarios. Para las grandes empresas, estos costes pueden verse compensados por las ventajas en términos de rendimiento, gestión y resiliencia.
- Ecosistema y soporte
Como solución de código abierto, KVM tiene un amplio ecosistema y una comunidad dinámica. Está integrado en múltiples distribuciones de Linux y dispone de muchos recursos y foros de soporte. Sin embargo, para obtener soporte comercial, puede ser necesario adquirir servicios de terceros.
VMware ofrece un ecosistema maduro con una amplia gama de productos complementarios y socios. El soporte comercial de VMware es conocido por su calidad, con amplias opciones de soporte disponibles para las empresas. El ecosistema de VMware también se integra bien con las soluciones de los socios para una funcionalidad ampliada.
Entonces, ¿por qué elegir KVM?
KVM (Kernel-based Virtual Machine) es una tecnología de virtualización de código abierto que convierte el núcleo Linux en un potente hipervisor. Permite virtualizar de forma eficaz las cargas de trabajo empresariales y ofrece todas las funciones necesarias para gestionar tanto la infraestructura física como la virtual, todo ello con un coste operativo reducido.
Los puntos fuertes de la solución KVM:
- Coste:
- Económico: como tecnología de código abierto, KVM no genera costes de licencia adicionales. Esto reduce significativamente el coste total de propiedad (TCO) en comparación con las soluciones de virtualización propietarias.
- Código abierto:
- Innovación y flexibilidad: el acceso al código fuente de KVM permite a los desarrolladores innovar y adaptar la solución a sus necesidades específicas. Esto ofrece una gran flexibilidad a la hora de gestionar y escalar entornos virtuales.
- Independencia: al utilizar KVM, las empresas evitan la dependencia de un único proveedor, lo que ofrece libertad a la hora de elegir y gestionar su infraestructura.
- Rendimiento:
- Alto rendimiento: KVM ofrece un rendimiento similar al del hardware nativo, sin la sobrecarga de una capa de hipervisor. Esto significa que las aplicaciones se ejecutan de forma más rápida y eficiente que en el caso de otros hipervisores.
- Interoperabilidad: KVM ofrece una excelente compatibilidad entre plataformas Linux y Windows, lo que permite una gestión fluida de sistemas heterogéneos.
- Compatibilidad e integración:
- Integración con el núcleo Linux: gracias a su integración directa con el núcleo Linux, KVM es adoptado ampliamente en entornos basados en Linux, ya que aprovecha las ventajas de Linux en términos de seguridad, gestión de memoria, programación de procesos, controladores de dispositivos y red.
- Integración con OKD: su compatibilidad con las distribuciones de Red Hat y su estrecha integración con soluciones basadas en Kubernetes, como OKD, lo convierten en una opción atractiva para las implementaciones de contenedores.
- Facilidad de uso:
- Gestión centralizada: KVM permite crear, iniciar, detener, pausar, migrar y modelar cientos de máquinas virtuales de forma sencilla y eficiente. Ya sea en software o hardware diverso, KVM ofrece una gestión centralizada y simplificada de los entornos virtuales.
Configuración de un clúster OKD con KVM: requisitos previos
Para instalar KVM, se requiere un servidor host con Fedora Core OS. Este sistema operativo proporciona la base sobre la que se instalará y configurará KVM.
Podríamos preguntarnos por qué se necesita un sistema operativo, dado que KVM se describe como un hipervisor de tipo 1, que se supone que funciona directamente en el hardware. En realidad, KVM es un módulo integrado en el núcleo Linux que activa la virtualización. El sistema operativo, como Fedora Core OS en este caso, sirve de soporte para este módulo. Una vez que KVM está activado, utiliza directamente el hardware como haría un hipervisor tradicional.
Resumiendo:
- Equipo host: el equipo host funciona con una distribución Linux, que proporciona el entorno necesario para instalar y utilizar KVM.
- Hipervisor KVM: una vez activado en el sistema operativo, KVM se conecta directamente al hardware y permite gestionar equipos virtuales.
Gestionar una infraestructura a través de la interfaz de línea de comandos (CLI) puede resultar complejo y laborioso, ya que requiere la ejecución manual de muchos comandos con diversos argumentos. Para aquellos que no se sienten cómodos con la CLI o prefieren un enfoque más intuitivo, una interfaz gráfica de usuario (GUI) suele ser más adecuada.
En nuestro caso, hemos optado por utilizar Cockpit, una herramienta gratuita y de código abierto que ofrece una interfaz web interactiva. Cockpit permite a los administradores del sistema supervisar, administrar y solucionar problemas de los servidores Linux con facilidad, ofreciendo una experiencia de usuario sencilla.
Para probar la compatibilidad entre OKD y KVM, es importante definir los servicios que se instalarán, así como sus requisitos en cuanto a recursos (cálculo, memoria, almacenamiento) y sus especificaciones de red.
Procedimiento de instalación de OKD en KVM
- Preparar el host KVM
Antes de empezar, es necesario preparar el host instalando y activando los paquetes necesarios para la virtualización. Estos son los componentes esenciales
- qemu-kvm: un emulador de código abierto y un paquete de virtualización que proporciona una emulación de hardware completa.
- libvirt: un paquete que contiene los archivos de configuración necesarios para ejecutar el demonio libvirt, lo que facilita la gestión de los equipos virtuales.
- virtinst: un conjunto de herramientas de línea de comandos para crear y modificar equipos virtuales.
- virt-install: una herramienta de línea de comandos para crear equipos virtuales directamente desde la CLI.
- bridge-utilities: conjunto de herramientas para crear y gestionar periféricos de tipo «bridge», necesarios para la configuración de red de los equipos virtuales.
- Preparación de la infraestructura para OKD 4
Una vez que el host KVM esté listo, los siguientes pasos preparan la infraestructura necesaria para implementar OKD:
- Creación de registros DNS: configurar los registros DNS para la API de OKD, el nodo de arranque y los nodos master y worker.
- Descarga de imágenes ISO: obtener las imágenes ISO para Bare Metal (Fedora CoreOS 38 y Ubuntu 22:04) para crear los equipos virtuales a través de la interfaz Cockpit.
- Reserva DHCP: reservar las direcciones IP a través de DHCP para los nodos OKD.
- Descargar el instalador OKD y el cliente oc: descargar openshift-install, la herramienta de instalación de OKD y el cliente oc para interactuar con el clúster.
-
- Configuración de la instalación
La configuración de OKD empieza por la preparación de los archivos necesarios para la instalación del clúster:
Archivo install-config.yaml: Este archivo define los parámetros de instalación, como el nombre del clúster, la plataforma de instalación (bare-metal en nuestro caso), el número de nodos master y worker, los rangos de direcciones IP y la clave pública SSH para todos los nodos.
- Creación de manifiestos y archivos Ignition:
- El archivo install-config.yaml se transforma en manifiestos Kubernetes (K8s) mediante openshift-install.
- A continuación, estos manifiestos se encapsulan en archivos Ignition, que se utilizan para el arranque inicial y la configuración automática de los nodos del clúster.
- Especificaciones de los archivos Ignition
Al crear los archivos Ignition, hay que asegurarse de especificar correctamente:
- El nombre del disco SCSI: identificar el disco que se va a utilizar para el sistema.
- Nombre de la interfaz de red: nombrar la interfaz de red para la conectividad.
Es importante tener en cuenta que los certificados generados para el bootstrap caducan después de 24 horas, por lo que es necesario terminar la instalación del clúster dentro de este plazo.
- Inicio de los nodos y finalización de la instalación
- Iniciar los nodos: iniciar los nodos de bootstrap, master y worker utilizando los archivos Ignition creados.
- Seguir la instalación: vigilar el progreso de la instalación del clúster OKD4. La fase de arranque dura entre 30 y 40 minutos.
- Validación de los nodos: una vez finalizado el arranque, asegurarse de que los nodos worker y de almacenamiento estén operativos.
- Aprobación de las CSR: apruebe las solicitudes de firma de certificado (CSR) para los nodos worker y de almacenamiento para finalizar la instalación del clúster.
¡Y eso es todo! Ha instalado OKD en el KVM. Esta configuración le ofrece una solución potente y flexible para gestionar sus aplicaciones contenedorizadas.
Tests y validación
Para validar la prueba de concepto (POC) de la instalación de OKD en KVM, hemos establecido varios criterios de validación. Estos garantizan que el clúster sea estable, tenga un buen rendimiento y cumpla con los requisitos de producción. A continuación se muestra un resumen de estos criterios y su estado actual:
Comparación entre OKD en VMWare y OKD en KVM
Durante nuestra experiencia con OKD en VMWare y KVM, observamos lo siguiente:
Instalación y configuración del clúster OKD
- Instalación y configuración iniciales:
- La instalación del clúster OKD y la configuración posterior a la instalación no mostraron ninguna diferencia significativa entre VMWare y KVM. Los procesos fueron similares y los pasos necesarios eran los mismos.
- Problema de la interfaz de red:
- Durante la preparación del clúster, nos enfrentamos a una dificultad específica a la hora de determinar la interfaz de red para cada VM en KVM. A diferencia de VMWare, donde la interfaz de red está estandarizada (ens192), en KVM, cada VM tenía una configuración de interfaz de red diferente. Tuvimos que iniciar los equipos virtuales para identificar con precisión sus interfaces de red y ajustar los archivos Ignition en consecuencia para el primer arranque.
Rendimiento
- Ejecución de builds:
- Para evaluar el rendimiento, ejecutamos varios builds en nuestros clústeres de test OKD en KVM y VMWare. Observamos que los builds en el clúster VMWare eran generalmente más rápidos que en KVM. De media, la diferencia de tiempo para completar el build fue aproximadamente 3 minutos más rápida en VMWare en comparación con KVM.
Esta comparación pone de relieve que, aunque la instalación y configuración iniciales son similares entre VMWare y KVM para OKD, puede haber diferencias en aspectos específicos como la configuración de red y el rendimiento en aplicaciones de uso intensivo como los builds. Estas observaciones pueden influir en la elección de la plataforma en función de las necesidades de rendimiento y gestión de recursos.
Build en OKD-test (KVM)
Antes de sacar conclusiones sobre el rendimiento, es necesario hacer un número suficiente de tests teniendo en cuenta la disponibilidad de recursos y la carga en los nodos worker.
Conclusión
Nuestra experiencia con el clúster de test OKD en KVM reveló un comportamiento muy similar al observado en VMWare. Sin embargo, la elección entre OKD en VMWare y OKD en KVM para una implementación en producción dependerá de las necesidades específicas de su organización, su infraestructura actual y las competencias técnicas disponible.
Es importante tener en cuenta que la configuración y gestión de KVM puede ser más compleja que la de VMWare, lo que requiere más competencias y tiempo para un dominio completo.
Tras la adquisición de VMware por parte de Broadcom, una encuesta reciente a la comunidad en la que participaron más de 700 encuestados mostró que el 58,8 % consideraba que los hipervisores basados en KVM eran su primera opción. Esta tendencia se ve reforzada por el creciente soporte de los principales proveedores de nube pública, como Azure, GCP y AWS, que ahora ofrecen soluciones de migración para cargas de trabajo de VMware a sus respectivos entornos en la nube.
Por ejemplo, el estado de Alaska ha migrado con éxito cargas de trabajo heredadas de VMware a Azure VMware Solution (AVS) en menos de tres meses. AWS también ofrece VMware Cloud en AWS, mientras que GCP ofrece Google Cloud VMware Engine (GCVE) con tarifas de VMware negociadas hasta 2027.
Red Hat, al apoyar a KVM como hipervisor principal para toda su gama de productos de virtualización, continúa mejorando activamente el código del núcleo y contribuyendo a la comunidad KVM. Openshift, basado en Red Hat Enterprise Linux (RHEL), también utiliza KVM como infraestructura subyacente.
En cuanto a la copia de seguridad con Veeam, aunque Veeam no es compatible directamente con KVM por el momento, es compatible con Red Hat Virtualization (RHV) basado en KVM. Tras la adquisición de VMware por parte de Broadcom, Veeam también empezó a probar su solución de copia de seguridad en Proxmox, otra plataforma de virtualización de código abierto basada en KVM.
En resumen, es fundamental rediseñar nuestras estrategias de virtualización para maximizar la eficiencia operativa, fomentar la innovación y garantizar una gestión financiera prudente en una era en la que las tecnologías de virtualización evolucionan rápidamente.