LXD

Tutorial de LXD

Tutorial de LXD

Conceptos básicos de LXD: ¿Qué es?? Y cómo usarlo?

La contenerización de LXD no ha recibido el protagonismo que tuvo Docker, pero de hecho está mucho más cerca de la idea central de la virtualización del sistema operativo. Pero antes de llegar allí, hablemos de la virtualización contemporánea a nivel de hardware.

Virtualización de hardware

La forma tradicional con la que funcionan VMware, VirtualBox, KVM y tecnologías similares es la siguiente: tiene una computadora de grado servidor, por ejemplo, un procesador Xeon de alta gama con 512 GB de RAM, conocido como bare metal. Instala un sistema operativo en esto, que luego ejecutará VMware, Virtualbox o KVM.

Estos son varios hipervisores, y el sistema operativo que los ejecuta es el sistema operativo host.

Ahora, lo que ofrece el hipervisor es esto: emula CPU, interfaces de red, discos de almacenamiento, memoria, E / S y otros recursos, de modo que se pueda instalar un nuevo sistema operativo sobre este conjunto de hardware virtual. Este nuevo sistema operativo es el sistema operativo invitado y se ejecuta en hardware virtual, como lo haría si estuviera instalado en una máquina física, pero hay un problema.

Si está pensando, "Pero emular varios dispositivos de hardware utilizando el hardware real suena ineficiente y lento."Tienes toda la razón. La virtualización a nivel de hardware es lenta e ineficiente.

Además, los propios sistemas operativos son fanáticos del control. Si asigna a un sistema operativo invitado 1 GB de RAM y 2 núcleos de CPU, felizmente tomará todos los recursos incluso si las aplicaciones que se ejecutan dentro de él solo usan una fracción de él. Estos recursos no estarán disponibles para que el hipervisor los utilice en otros lugares.

Esto limita en gran medida la cantidad de máquinas virtuales que se pueden ejecutar sobre un hipervisor. Si usted es un proveedor de alojamiento en la nube, esto significa que su resultado final se verá muy afectado.


La forma contenedora de hacer las cosas

La idea de hardware virtualizado se descarta cuando empezamos a hablar de contenedores y específicamente de LXD. En lugar de emular recursos de hardware individuales, lo que intentamos hacer es virtualizar el sistema operativo.

Cuando se pone en marcha un contenedor LX, el sistema operativo se ofrece (es decir, el kernel, las bibliotecas todos los recursos disponibles) a las aplicaciones que se ejecutan dentro del contenedor. Los usuarios y las aplicaciones dentro de este contenedor no se darán cuenta de las aplicaciones y paquetes que se ejecutan fuera de él, y viceversa.

En lo que respecta a la asignación de recursos, simplemente puede tomar una nota para no permitir que un contenedor en particular use más de, digamos, 2 GB de RAM y 2 CPU. De esta manera, cuando las aplicaciones que se ejecutan dentro de un contenedor no hacen nada intensivo, los recursos se pueden asignar a otra parte del entorno del host.

Sin embargo, cuando las aplicaciones se ejecutan con una gran carga, obtienen el rendimiento básico!

La desventaja obvia de esto es que no puede ejecutar ningún sistema operativo arbitrario como invitado. Porque los diferentes sistemas operativos tienen arquitecturas diferentes en conjunto. Afortunadamente para los usuarios de GNU / Linux, el kernel de Linux ofrece una compatibilidad ABI tan ajustada que puede emular diferentes distribuciones sobre el mismo kernel. Para que pueda ejecutar binarios de CentOS y aplicaciones de Ubuntu en el mismo metal solo en diferentes contenedores.


Inicialización LXD

La contenedorización LX es una tecnología robusta y bien probada para sistemas operativos basados ​​en Linux. Tiene dos componentes principales, uno es LXC, que es el que administra las configuraciones de contenedores, archivos de imagen, etc. y luego está LXD, que es el demonio que se ejecuta en su host, lo que garantiza que se sigan todas las políticas establecidas para la contenedorización.

Viene instalado por defecto en Ubuntu Server 16.04 LTS, si está utilizando la distribución de escritorio, ejecute:

$ apt instalar lxd lxd-cliente

Una vez hecho esto, debe inicializar varios parámetros. El siguiente comando lo ejecutará a través de ellos:

$ lxd init

Puede seleccionar las opciones predeterminadas a partir de aquí.  Lo más complicado sería configurar interfaces de red. Cuando se le solicite la configuración de red LXD, seleccione la opción predeterminada sí.

1 Responda sí, de nuevo, cuando se le solicite configurar la red

La siguiente ventana le pedirá el nombre de la interfaz de red (como se ve en el host), déjelo en el valor predeterminado lxdbr0.

La configuración de la subred IPv4 vendría después de esto. Permitiría que diferentes contenedores LX se comuniquen entre sí como si fueran diferentes computadoras en una red local. Seleccione sí para esto.

A continuación habrá varios 10.202.X.Se muestran las direcciones X, cada una con un rol diferente en esta subred. Puede presionar Enter sin necesidad de modificar las opciones. Cuando se le solicite la configuración de NAT, seleccione sí.

Esto permite que sus contenedores obtengan conectividad a Internet, utilizando la IP pública del host, de la misma manera que lo hacen su computadora portátil y otros dispositivos a través del enrutador doméstico (con reenvío de puertos).

La última opción sobre la subred IPv6 es completamente opcional y le recomendaría que la omita por ahora. Decir No, cuando se le solicite opciones de IPv6.


Girando los contenedores

Para ejecutar una nueva instancia de, digamos, Ubuntu 16.04, ejecute el siguiente comando:

$ lxc lanzar ubuntu: 16.04 nombre_de_su_contenedor

Dado que es la primera vez que ejecuta un servidor Ubuntu, llevará tiempo recuperar la imagen del contenedor de los repositorios remotos. Una vez hecho esto, puede ver los detalles sobre el contenedor lanzado, ejecutando el comando:

$ lxc lista

En este ejemplo, el nombre del contenedor es cont1.

Si desea ingresar al contenedor, ejecute el comando;

$ lxc exec name_of_your_container bash

Esto lo llevará al shell bash que se ejecuta dentro de ese contenedor. Olería y se sentiría como una nueva instalación de Ubuntu 16.04 y puede instalar paquetes libremente dentro de él y hacer varios experimentos con los que no arriesgaría su instalación principal.

Ahora que tiene el archivo de imagen almacenado localmente en su sistema host, puede hacer girar los contenedores de Ubuntu muy rápidamente y usarlos como sistemas desechables.

Para detener y eliminar un contenedor LX, ejecute;

$ lxc detener nombre_contenedor $ lxc eliminar nombre_contenedor 

Use el comando de lanzamiento lxc, como lo hizo la primera vez para activar nuevos contenedores.


A dónde ir desde aquí

Ahora que sabe cuál es la arquitectura de LXD, es posible que desee comenzar a explorar temas como redes y almacenamiento para contenedores y cómo configurarlos para adaptarse a su carga de trabajo.

Es posible que también desee conocer las principales diferencias entre Docker y LXD y lo que realmente podría adaptarse mejor a sus necesidades. Si desea utilizar ZFS como su backend de almacenamiento (como debería!) es posible que desee consultar este tutorial sobre los conceptos básicos de ZFS.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...