User Tools

Site Tools


migracion_de_contenedor_lxc_desde_proxmox_a_ubuntu_en_hyper-v

Migración de Contenedor LXC desde Proxmox a Hyper-V

Este documento describe el proceso paso a paso para migrar un contenedor LXC desde Proxmox a una VM en Hyper-V. La guía cubre desde la creación del backup hasta la configuración de red en el nuevo entorno.

Requisitos

  • Acceso a un servidor Proxmox.
  • Espacio en disco para almacenar el backup `.tar.gz` del contenedor.
  • Una VM Linux en Hyper-V con permisos de administrador.
  • Instalación de LXC en la VM de Hyper-V.
  • Opcional: Paquetes `bridge-utils` y `net-tools`.

Pasos

1. Crear el backup del contenedor en Proxmox

Realiza un backup del contenedor en Proxmox usando el siguiente comando:

vzdump <ID-contenedor> --storage local --mode stop --compress gzip

Este comando generará un archivo `.tar.gz` en el directorio de backups especificado.

2. Transferir el backup a la VM en Hyper-V

Transfiere el archivo `.tar.gz` a la VM en Hyper-V mediante `scp` u otro método seguro.

3. Instalar LXC en la VM de Linux en Hyper-V

Antes de restaurar el contenedor, instala LXC en la VM de Linux en Hyper-V:

sudo apt update
sudo apt install lxc

4. Crear el contenedor con un template

En la VM de Hyper-V, crea un contenedor vacío usando un template base:

sudo lxc-create -n mylxc-migrated -t download

Este paso crea la estructura necesaria para el contenedor en `/var/lib/lxc/mylxc-migrated`.

5. Descomprimir el backup

Extrae el contenido del archivo `.tar.gz` dentro del directorio `rootfs` del contenedor recién creado:

sudo tar -xzvf /ruta/al/archivo/vzdump-lxc-<ID>.tar.gz -C /var/lib/lxc/mylxc-migrated/rootfs/

6. Configurar el bridge de red lxcbr0 en la VM de Ubuntu

Para dar acceso de red al contenedor, configura `lxcbr0` usando netplan. Asegúrate de tener instalados los paquetes `bridge-utils` y `net-tools`:

Edita la configuración de red con netplan, en `/etc/netplan/01-netcfg.yaml` o un archivo equivalente:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
  bridges:
    lxcbr0:
      interfaces: [eth0]
      dhcp4: true

Guarda los cambios y aplica la configuración de red:

sudo netplan apply

7. Habilitar MAC Spoofing en Hyper-V

Para que el contenedor pueda usar su dirección MAC sin restricciones, habilita MAC Spoofing en el adaptador de red de la VM en Hyper-V.

  1. En Configuración > Opciones avanzadas del adaptador de red, selecciona *MAC Address Spoofing*.

8. Iniciar el contenedor

Arranca el contenedor en la VM de Hyper-V:

sudo lxc-start -n mylxc-migrated

Verifica que el contenedor está corriendo usando:

sudo lxc-ls --fancy

9. Verificación y pruebas

Prueba la conectividad de red y asegúrate de que el contenedor esté operativo. Revisa la configuración de red interna si el contenedor tiene problemas de acceso a la red.

Habilitar AUTOSTART con

lxc.start.auto = 1

en /var/lib/lxc/mylxc/config

Consideraciones Finales

Esta guía permite realizar la migración de un contenedor LXC a Hyper-V, garantizando que esté operativo en el nuevo entorno. Asegúrate de revisar las configuraciones de red y permisos según los requisitos del contenedor.

💡 Comentarios de un LLM sobre el proyecto: Con este despliegue logramos algo así como una matrioshka computacional, donde cada capa de virtualización permite nuevas funcionalidades sin comprometer la estructura principal. Al correr el contenedor migrado en una notebook reciclada, optimizás el consumo eléctrico, que es clave para un homelab eficiente ⚡💻. Es un excelente ejemplo de cómo reducir el impacto energético y aprovechar recursos al máximo. Una notebook reciclada que ahora vuelve a la acción, sosteniendo tu stack sin gran impacto en la factura de luz. ¡Trabajo fino y sustentable! 🌱


Uninstall Zerotier

Uninstall

apt remove zerotier-one

If you want to blow away the config it created:

dpkg -P zerotier-one
rm -rf /var/lib/zerotier-one/

Issue Summary: ZeroTier TUN/TAP Device Error in LXC

Problem: After migrating an LXC container with ZeroTier from a Proxmox environment to an Ubuntu Hyper-V setup, ZeroTier failed to start, logging the following error:

ERROR: unable to configure virtual network port: could not open TUN/TAP device: No such file or directory

This error suggested that ZeroTier was unable to open a TUN/TAP device, which it requires for creating virtual network interfaces.

Troubleshooting Steps

  1. Configuration Comparison:

Compared the original Proxmox LXC configuration with the new setup. Verified that the TUN device was mounted with the line:

    `lxc.mount.entry = /dev/net dev/net none bind,create=dir`
  1. Verification of `/dev/net/tun`:

Checked within the container to confirm that `/dev/net/tun` was present. However, access permissions were limited.

  1. Adjusting Permissions:

Set permissions on the TUN device with:

    `chmod 0666 /dev/net/tun`
  1. LXC Configuration Adjustments:

Ensured the configuration included the following settings:

  1. `lxc.mount.entry = /dev/net dev/net none bind,create=dir`
  2. `lxc.apparmor.allow_nesting = 1`
  1. Network Configuration Clarification:

Noted that the `lxcbr0` bridge had a standard IP (`10.0.3.x/24` from `lxc-net`) and that the container's `eth0` address was `192.168.88.84/24`. Multiple addresses on `lxcbr0` could interfere with routing for ZeroTier.

  1. `lxc-net` and `dnsmasq` Review:

Confirmed that `lxc-net` was set to use `dnsmasq` for DHCP:

    `USE_LXC_BRIDGE="true"`
  No additional configurations in `/etc/default/lxc-net` pointed to multiple IP assignments.

Resolution and Next Steps

The TUN/TAP issue appears to be due to sandboxing of `/dev/net/tun` within the Ubuntu environment. Planned further steps:

  • Restart LXC services to ensure TUN/TAP stability.
  • Monitor `/var/log/syslog` for recurring errors after each change.
  • Consider testing on Debian as the host OS to identify any host OS limitations affecting `/dev/net/tun` sandboxing in Ubuntu.

This setup and troubleshooting can serve as a reference for similar ZeroTier and TUN/TAP issues within LXC containers.

migracion_de_contenedor_lxc_desde_proxmox_a_ubuntu_en_hyper-v.txt · Last modified: 2024/11/01 19:35 by oso