LXD es un sistema administrador de contenedores y máquinas virtuales de última generación. Desde bookworm Debian empaqueta las versiones con soporte a largo plazo (LTS) de LXD.
Contents
Versiones de LXD soportadas
LXD tiene (en origen) las siguientes publicaciones:
Versión |
Fecha de fín del soporte |
En Debian |
5.0 LTS |
Bookworm |
Instalación
Instalar en Debian es tan simple como instalar el paquete lxd.
sudo apt install lxd
Configuración
Tras instalar hay que configurar LXD:
sudo lxd init
La red en puente por omisión de LXD requiere instalar el paquete dnsmasq-base. Si se elige instalar LXD sin sus paquetes recomendados y se quiere usar el puente por omisión hay que instalar dnsmasq-base para que la red funcione correctamente.
Si se quiere que los usuarios no administradores interactúen con LXD mediante el zócalo Unix local hay que añadirles al grupo lxd:
sudo usermod -aG lxd <username>
Nótese que según la documentación original el accesso a LXD mediante el zócalo Unix local siempre otorga acceso total a LXD. Esto incluye la habilidad de adherir rutas del sistema de archivos o dispositivos, así como ajustar las funciones de seguridad, a cualquier instancia. Por ello solo debe otorgarse acceso a quien se pueda confiar acceso de root al anfitrión.
Scripts de inicio
Se proporcionan scripts de inicio para ambos, systemd y SysV, pero los de SysV no están tán bien probados como los de systemd. Se admiten informes de defectos y parches para mejorar la experiencia con LXD en sistemas sin systemd.
Al instalar LXD en anfitriones sin systemd hay que asegurarse de que haya una jerarquía cgroup v2 antes de iniciar LXD. Una manera de hacer esto es añadir una línea como la siguiente a /etc/fstab:
cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec 0 0
Backends de almacenamiento
LXD soporta varios backends de almacenamiento. Al instalarse, LXD sugerirá los paquetes necesarios para habilitar todos los backends, pero en resumen:
btrfs require el paquete btrfs-progs
ceph/cephfs require el paquete ceph-common
lvm require el paquete lvm2
zfs require el paquete zfsutils-linux
Tras instalar instalar uno o más de estos paquetes adicionales, hay que asegurarse de reiniciar el servicio LXD para que los considere.
Máquinas virtuales
LXD puede opcionalmente crear virtual máquinas virtuales mediante QEMU. Para hablitar esta capacidad en el sistema anfitrión hay que instalar el/los paquete(s) qemu-system-<arquitectura> y el paquete lxd-agent y a continuación reiniciar el servicio LXD. Ahora LXD podrá crear máquinas virtuales pasándole el modificador --vm en la orden de creación.
Problemas conocidos
- Tener a LXD y Docker compartiendo anfitrión puede causar problemas de conectividad. Un motivo común de estos problemas es que Docker establece la política FORWARD a DROP, lo que impide a LXD derivar tráfico causando así que las instancias pierdan conectividad a la red. Hay dos formas de arreglar esto:
Como se describe en el mensaje 91 del ticket 865975, se puede añadir net.ipv4.ip_forward=1 a /etc/sysctl.conf, lo que creará una política de FORWARD que Docker puede usar. Así Docker no mandará la cadena FORWARD a DROP al arrancar.
Alternativamente se puede usar la siguiente orden para permitir explícitamente el tráfico de red de tu puente hacia el interfaz de red externa: iptables -I DOCKER-USER -i <network_bridge> -o <external_interface> -j ACCEPT (según la documentación LXD original)
Si el paquete apparmor no está instalado en el sistema anfitrión, los contenedores fallaran al arrancar salvo que se modifique su configuración para incluír lxc.apparmor.profile=unconfined. Esto se ha informado al proyecto original en https://github.com/lxc/lxc/issues/4150.
Referencias
