Máquina virtual basada en el núcleo (KVM, por sus siglas en inglés) es una solución de virtualización de código abierto y estándar de facto que está estrechamente integrada en Linux. Se trata de un módulo cargable del kernel que convierte a Linux en un hipervisor de tipo 1 (bare-metal) que crea una plataforma operativa virtual utilizada para ejecutar máquinas virtuales (VM).
Bajo KVM, cada VM es un proceso de Linux que está programado y gestionado por el kernel y tiene hardware virtualizado privado (es decir, CPU, tarjeta de red, disco, etc.). También soporta la virtualización anidada, que permite ejecutar una VM dentro de otra VM.
Algunas de sus características clave incluyen el soporte de una amplia gama de plataformas de hardware soportadas por Linux (hardware x86 con extensiones de virtualización (Intel VT o AMD-V)), proporciona una mayor seguridad y aislamiento de la VM utilizando tanto SELinux como la virtualización segura (sVirt), hereda las características de gestión de memoria del kernel, y soporta la migración tanto offline como en tiempo real (migración de una VM en ejecución entre hosts físicos).
En este artículo, aprenderás a instalar la virtualización KVM, crear y gestionar Máquinas Virtuales en CentOS 8 y RHEL 8 Linux.
Requisitos previos
- Una instalación fresca del servidor CentOS 8
- Una instalación fresca del servidor RHEL 8
- Una suscripción RedHat habilitada en el servidor RHEL 8
Además, asegúrese de que su plataforma de hardware soporta la virtualización ejecutando el siguiente comando.
# grep -e 'vmx' /proc/cpuinfo#Intel systems# grep -e 'svm' /proc/cpuinfo#AMD systems
También, confirme que los módulos KVM están cargados en el kernel (deberían estarlo, por defecto).
# lsmod | grep kvm
Aquí está el ejemplo de salida en el sistema de prueba que está basado en Intel:
En una serie anterior de guías de KVM, mostramos cómo crear máquinas virtuales en Linux usando KVM (Kernel-based Virtual Machine) donde demostramos cómo crear y gestionar VMs usando la herramienta GUI virt-manager (que ahora está obsoleta según la documentación de RHEL 8). Para esta guía, adoptaremos un enfoque diferente, utilizaremos la consola web Cockpit.
Paso 1: Configurar la consola web Cockpit en CentOS 8
1. El cockpit es una interfaz basada en la web fácil de usar, integrada y extensible para administrar un servidor Linux en un navegador web. Permite realizar tareas del sistema como configurar redes, administrar el almacenamiento, crear VMs e inspeccionar registros con un ratón. Utiliza los inicios de sesión y privilegios de usuario normales de su sistema, pero también admite otros métodos de autenticación.
Viene preinstalado y habilitado en sistemas CentOS 8 y RHEL 8 recién instalados, si no lo tiene instalado, instálelo utilizando el siguiente comando dnf. La extensión cockpit-machines debe ser instalada para gestionar VMs basadas en Libvirt.
# dnf install cockpit cockpit-machines
2. Cuando la instalación del paquete esté completa, inicie el socket de cockpit, habilítelo para que se auto-inicie en el arranque del sistema y compruebe su estado para confirmar que está en funcionamiento.
# systemctl start cockpit.socket# systemctl enable cockpit.socket# systemctl status cockpit.socket
3. A continuación, añada el servicio de cockpit en el cortafuegos del sistema que está habilitado por defecto, utilizando el comando firewall-cmd y recargue la configuración del cortafuegos para aplicar los nuevos cambios.
# firewall-cmd --add-service=cockpit --permanent# firewall-cmd --reload
4. Para acceder a la consola web de cockpit, abra un navegador web y utilice la siguiente URL para navegar.
https://FQDN:9090/ORhttps://SERVER_IP:9090/
El cockpit utiliza un certificado autofirmado para habilitar HTTPS, simplemente proceda con la conexión cuando obtenga una advertencia del navegador. En la página de inicio de sesión, utilice las credenciales de su cuenta de usuario del servidor.
Paso 2: Instalación de la virtualización KVM CentOS 8
5. A continuación, instale el módulo de virtualización y otros paquetes de virtualización de la siguiente manera. El paquete virt-install proporciona una herramienta para instalar máquinas virtuales desde la interfaz de línea de comandos, y virt-viewer se utiliza para ver las máquinas virtuales.
# dnf module install virt # dnf install virt-install virt-viewer
6. A continuación, ejecute el comando virt-host-validate para validar si la máquina anfitriona está configurada para ejecutar los controladores del hipervisor libvirt.
# virt-host-validate
7. A continuación, inicie el demonio libvirtd (libvirtd) y permita que se inicie automáticamente en cada arranque. A continuación, compruebe su estado para confirmar que está en funcionamiento.
# systemctl start libvirtd.service# systemctl enable libvirtd.service# systemctl status libvirtd.service
Paso 3: Configurar el puente de red (conmutador de red virtual) a través de Cockpit
8. Ahora cree un puente de red (conmutador de red virtual) para integrar las máquinas virtuales a la misma red que el host. Por defecto, una vez que se inicia el demonio libvirtd, se activa la interfaz de red por defecto virbr0 que representa el conmutador de red virtual que opera en modo NAT.
Para esta guía, crearemos una interfaz de red en modo puente llamada br0. Esto permitirá que las máquinas virtuales sean accesibles en las redes del host.
Desde la interfaz principal del cockpit, haga clic en Networking, y luego en Add Bridge como se indica en la siguiente captura de pantalla.
9. En la ventana emergente, introduzca el nombre del puente y seleccione los esclavos del puente o los dispositivos de puerto (por ejemplo, enp2s0 que representa la interfaz Ethernet) como se muestra en la siguiente captura de pantalla. A continuación, haga clic en Aplicar.
10. Ahora, cuando mire la lista de Interfaces, el nuevo puente debería aparecer allí y, después de unos segundos, la interfaz Ethernet debería desactivarse (quitarse).
Paso 4: Crear y gestionar máquinas virtuales a través de la consola web de Cockpit
11. Desde la interfaz principal de Cockpit, haga clic en la opción Máquinas virtuales, como se destaca en la siguiente captura de pantalla. Desde la página de Máquinas Virtuales, haga clic en Crear VM.
12. Aparecerá una ventana con opciones para crear una nueva VM. Introduzca la conexión, el nombre (por ejemplo, ubuntu18.04), el tipo de fuente de instalación (en el sistema de prueba, hemos almacenado imágenes ISO en el grupo de almacenamiento, es decir, /var/lib/libvirt/images/), la fuente de instalación, el almacenamiento, el tamaño y la memoria, como se muestra en la siguiente imagen. El proveedor del sistema operativo y el sistema operativo deben ser elegidos automáticamente después de entrar en la fuente de instalación.
También marque la opción de iniciar inmediatamente la VM, a continuación, haga clic en Crear.
13. Después de hacer clic en Crear desde el paso anterior, la VM debería iniciarse automáticamente y debería arrancar utilizando la imagen ISO proporcionada. Proceda a instalar el sistema operativo invitado (Ubuntu 18.04 en nuestro caso).
Si hace clic en Interfaces de red de la VM, el origen de la red debería indicar la interfaz de red puente recién creada.
Y durante la instalación, en el paso de configuración de una interfaz de red, debería poder observar que la interfaz Ethernet de la VM recibe una dirección IP del servidor DHCP de la red anfitriona.
Tenga en cuenta que necesita instalar el paquete OpenSSH para acceder al SO huésped a través de SSH desde cualquier máquina de la red anfitriona, como se describe en la última sección.
14. Cuando la instalación del SO huésped esté completa, reinicie la VM, luego vaya a Discos y separe/elimine el dispositivo cdrom bajo los discos de la VM. A continuación, haga clic en Ejecutar para iniciar la VM.
15. Ahora, en Consolas, puede iniciar sesión en el SO invitado utilizando una cuenta de usuario que haya creado durante la instalación del SO.
Paso 5: Acceder al SO invitado de una máquina virtual mediante SSH
16. Para acceder al SO invitado recién instalado desde la red del host a través de SSH, ejecute el siguiente comando (sustituya 10.42.0.197 por la dirección IP de su invitado).
$ ssh [email protected]
17. Para apagar, reiniciar o eliminar una VM, haga clic en ella desde la lista de VMs, y luego utilice los botones resaltados en la siguiente captura de pantalla.
¡Eso es todo por ahora! En esta guía, hemos mostrado cómo instalar paquetes de virtualización KVM, y crear y gestionar VMs a través de la consola web de la cabina. Para más detalles, vea: Introducción a la virtualización en RHEL 8.