Lanzamiento de las herramientas para la gestión de contenedores LXC 6.0, Incus 6.0 y LXD 5.21.1

La comunidad de Linux Containers ha publicado una nueva versión de la herramienta para el funcionamiento de contenedores aislados LXC 6.0, que proporciona un runtime adecuado tanto para ejecutar contenedores con un entorno de sistema completo, similares a máquinas virtuales, como para ejecutar contenedores no privilegiados de aplicaciones individuales (OCI). LXC se considera una herramienta de bajo nivel que opera a nivel de contenedores individuales. Para la gestión centralizada de contenedores desplegados en un clúster de varios servidores, se están desarrollando sistemas Incus y LXD basados en LXC. La rama LXC 6.0 está clasificada como una versión de soporte a largo plazo, con actualizaciones que se generarán durante 5 años (hasta 2029). El código de LXC está escrito en C y se distribuye bajo la licencia GPLv2.

LXC incluye la biblioteca liblxc, un conjunto de utilidades (lxc-create, lxc-start, lxc-stop, lxc-ls, etc.), plantillas para construir contenedores y un conjunto de bindings para varios lenguajes de programación. El aislamiento se realiza mediante los mecanismos estándar del núcleo de Linux. Para el aislamiento de procesos, pilas de red ipc, uts, identificadores de usuarios y puntos de montaje se utiliza el mecanismo de espacios de nombres (namespaces). Se utilizan cgroups para limitar los recursos. Para reducir los privilegios y restringir el acceso se implementan características del núcleo como perfiles de Apparmor y SELinux, políticas de Seccomp, Chroots (pivot_root) y capabilities.

Principales cambios:

  • Se ha proporcionado la posibilidad de compilar un único archivo ejecutable lxc, que combina en una sola utilidad todos los comandos que anteriormente se distribuían como utilidades separadas 'lxc-*'. Para compilar el archivo ejecutable agregado, se ha propuesto la opción 'tools-multicall=true', que al activarla crea enlaces simbólicos de todas las antiguas utilidades separadas hacia la utilidad lxc. La compilación en forma de un único archivo ejecutable permite reducir significativamente el espacio en disco consumido por las herramientas, lo cual es relevante para sistemas embebidos.
  • Se ha añadido a la biblioteca liblxc la función set_timeout, que permite establecer un tiempo de espera para cualquier operación de interacción con el monitor LXC.
  • En la interfaz de los puentes de red, lxcbr0 está activada por defecto soporte para IPv6 con direcciones asignadas del rango IPv6 ULA (Dirección Local Única).
  • En la utilidad lxc-usernsexec se han añadido las opciones '-u' y '-g' para cambiar los identificadores de usuario y grupo (UID y GID).
  • En la utilidad lxc-checkconfig se ha garantizado que la versión se muestre solo si existe el comando lxc-start y se ha añadido la información sobre el número máximo permitido de cada tipo de espacio de nombres.
  • Se ha añadido soporte para imágenes de contenedores en formato OCI, en las que se utiliza el sistema de archivos Squashfs para la compresión de información.
  • Para interactuar con systemd a través de D-Bus, se utiliza una biblioteca separada libdbus-1 en lugar de libsystemd.
  • Se ha descontinuado el soporte para el sistema de inicio Upstart.

Se ha publicado simultáneamente la versión del proyecto Incus, en el marco del cual la comunidad de Linux Containers desarrolla un fork del sistema de gestión de contenedores LXD, creado por el antiguo equipo de desarrolladores que alguna vez creó LXD. El código de Incus está escrito en Go y se distribuye bajo la licencia Apache 2.0. Incus 6.0 se posiciona como la primera rama estable para la cual se asegurará un ciclo de actualizaciones prolongado (LTS). Entre los cambios en Incus 6.0 se destaca la posibilidad de crear interfaces de red a través de la API bridge.external_interfaces, una mejor mejora en el soporte de autenticación a través de JWT (JSON Web Token), soporte para USB y la visualización de información detallada del sistema en el comando «incus info —resources», apoyo a la versión LXD 5.21 en la herramienta lxd-to-incus.

Incus y LXD proporcionan medios para la gestión centralizada de contenedores y máquinas virtuales, desplegadas tanto en un solo host como en un clúster de varios. servidores. El proyecto se implementa como un proceso en segundo plano que acepta solicitudes a través de la red mediante una API REST y que soporta diversos backend de almacenamiento (árbol de directorios, ZFS, Btrfs, LVM), instantáneas del estado, migraciones en vivo de contenedores en funcionamiento de una máquina a otra y herramientas para el almacenamiento de imágenes de contenedores. Como runtime para ejecutar contenedores se utiliza la herramienta LXC. La separación se realiza utilizando los mecanismos nativos del núcleo de Linux (namespaces, cgroups, Apparmor, SELinux, Seccomp).

La comunidad de Linux Containers ha supervisado el desarrollo de LXD antes de que la empresa Canonical decidiera transformar LXD en un proyecto corporativo. El objetivo del fork es proporcionar una alternativa gestionada por una comunidad independiente al proyecto LXD, controlado por Canonical. La creación de Incus también ha permitido trabajar en la corrección de algunos errores conceptuales cometidos en el desarrollo de LXD, que antes no se podían corregir sin romper la compatibilidad hacia atrás.

La empresa Canonical ha publicado una nueva versión del sistema de gestión de contenedores LXD 5.21.1. La rama LXD 5.21 está marcada como LTS y será soportada hasta junio de 2029. El código añadido a LXD por los empleados de Canonical se distribuye bajo la licencia AGPLv3, pero el código de colaboradores externos, sobre el cual Canonical no tiene derechos de propiedad, permanece bajo Apache 2.0. Entre los cambios funcionales en LXD 5.21.1 se destaca la transición del paquete snap de LXD a las ramas LXC 6.0 y LXCFS 6.0. Se ha añadido la extensión storage_volumes_all a la API junto con el manejador asociado /1.0/storage_volumes para mostrar una lista de todas las particiones de almacenamiento. También se ha incorporado la extensión instances_files_modify_permissions para modificar a través de la API los permisos de acceso a archivos existentes.

Está disponible la versión del sistema de archivos virtual LXCFS 6.0, que se utiliza para simular en contenedores los pseudo-sistemas de archivos /proc y /sys, así como para la representación virtualizada de cgroupfs en distribuciones que no soportan espacios de nombres de cgroup. La nueva versión incluye la opción "--enable-cgroup", que permite gestionar la activación de la funcionalidad incorporada para crear un árbol virtual de cgroupfs para los contenedores, utilizando cgroupv1 (en la actualidad, la mayoría de las distribuciones soportan los espacios de nombres de cgroup proporcionados por el núcleo, por lo que la activación por defecto de la implementación alternativa incorporada ha dejado de tener sentido y ahora es opcional). Además, en LXCFS 6.0 se ha detenido la filtración de CPU al generar el archivo /sys/devices/system/cpu, dependiendo del estado online/offline.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster