El fabricante QNAP dispone en todos sus servidores NAS basados en arquitectura x86 la aplicación Container Station. Gracias a esta aplicación que podemos descargar desde App Center y usar de forma gratuita, vamos a poder desplegar contenedores en nuestro servidor, con el objetivo de tener cientos de servicios en el mismo NAS y aislados unos de otros. Actualmente Container Station tiene soporte para tres tipos de tecnologías de virtualización ligera con contenedores: LXD, el popular Docker y también soporta Kata Containers. Hoy en RedesZone vamos a centrarnos específicamente en este último, virtualización con contenedores Kata.
Qué es y para qué sirve Kata Container
Kata es una nueva tecnología de virtualización de servicios en contenedores que promete ser más segura que cualquier otra. Esta nueva tecnología puede mejorar significativamente tanto la seguridad del equipo host, como también el aislamiento de los contenedores configurados. Esta tecnología combina los beneficios de utilizar un hipervisor para la virtualización para mejorar la seguridad, y la versatilidad de los contenedores proporcionados por Kubernetes.
Algunas características muy importantes de Kata son las siguientes:
- Al tener tecnología de virtualización con hipervisor, todos los contenedores están de forma completamente independiente en el sistema.
- Los contenedores no comparten el mismo Kernel, algo que sí sucede con otras tecnologías como Docker. De esta forma, proporciona aislamiento de la red, I/O y también memoria, además, puede utilizar aislamiento por hardware adicionalmente si el procesador lo soporta.
- Dispone de seguridad avanzada y aislamiento entre los propios contenedores.
La principal ventaja de Kata es que combina lo mejor de las máquinas virtuales (con hipervisor) junto con las implementaciones rápidas y sencillas de Docker. Es decir, está a medio camino entre una virtualización pura de un sistema operativo, como hace Virtualization Station, y los típicos contenedores Docker que tenemos en Container Station. Otras características interesantes son que soporta los principales estándares de la industria, incluyendo el contenedor OCI, la interfaz CRI de Kubernetes y también tecnologías de virtualización heredadas. A continuación, podéis ver una foto con la arquitectura que tenemos en todas las soluciones:
Cuando levantamos una VM en nuestro NAS de QNAP con Virtualization Station, hacemos uso de un Hipervisor, y por encima instalamos el sistema operativo completo. Una vez que el sistema operativo está instalado, ya podemos instalar las diferentes aplicaciones que nosotros queramos. Esta forma de virtualizar sistemas operativos es segura y muy completa, lo único malo es que necesita mayores recursos, aunque sea para solamente utilizar una aplicación.
En el caso de los «Container» como Docker, disponemos de una tecnología que nos permitirá desplegar múltiples contenedores de forma fácil y rápida con virtualización ligera. Es muy importante en este escenario configurar adecuadamente los permisos para cada aplicación, de lo contrario, podríamos tener problemas de seguridad en la arquitectura de virtualización.
Kata Container tiene una arquitectura similar a la de VM, pero bastante más eficiente, porque dispone de un sistema operativo base muy liviano y optimizado, y justo por encima tendremos una aplicación funcionando que está completamente aislada del resto de aplicaciones, sin compartir el kernel. Por este motivo, utilizar Kata es muy seguro, porque todos sus contenedores están aislados los unos con los otros. Si eres un usuario final o una empresa y quieres una seguridad mejorada, seguramente Kata sea tu mejor opción.
Comparativa VM vs Kata vs Docker
El fabricante QNAP dispone de una comparativa entre las cuatro tecnologías de virtualización que actualmente soportan sus servidores NAS. En la siguiente imagen, podéis ver tanto la compatibilidad como también el tiempo de configuración y los requisitos de recursos:
Si comparamos Docker y Kata, podemos ver que el tiempo de configuración de Docker es menor y consume menos recursos que Kata, por lo que si tienes un servidor NAS poco potente, seguramente te merezca más la pena configurar Docker con una política restrictiva a nivel de seguridad. En el caso de disponer de más recursos hardware, Kata podría ser la opción perfecta porque es un equilibrio entre desplegar una máquina virtual VM completa y usar Docker, pero con la seguridad adicional que nos brinda.
Requisitos del NAS
En la siguiente imagen podéis ver una comparativa de los requisitos oficiales para hacer funcionar las diferentes tecnologías de virtualización. Sin lugar a dudas, Kata es el que más recursos hardware necesita, y es que como mínimo necesitaremos 4GB de memoria RAM para hacerlo funcionar, mientras que LXD y Docker solamente necesitamos 1GB de RAM para hacerlo funcionar.
Estos son los requisitos mínimos, debes tener en cuenta que no es posible calcular el número exacto de contenedores que podemos funcionar de forma simultánea en nuestro servidor. Según QNAP, si usas QTS es recomendable reservar 1,5GB de RAM para el propio sistema operativo y diferentes servicios, si usas QuTS hero es recomendable reservar el 50% de la memoria total disponible, sobre todo si usas deduplicación de ZFS porque tiene un alto consumo de memoria RAM.
Por norma general, se recomienda usar un contenedor por cada núcleo virtual del procesador y 512MB de memoria RAM, por ejemplo:
- QNAP TVS-h1288X: este NAS tiene un procesador de 6 núcleos, 12 hilos y un total de 24vCPU. Por lo que podríamos ejecutar hasta 24 contenedores sin problemas, no obstante, el procesador Intel Xeon W-1250 es muy potente, por lo que seguramente puedas ejecutar más contenedores. Respecto a la RAM, la capacidad instalada son 32GB y nos permite tener hasta 128GB de memoria, por lo que andamos sobrados.
Tal y como habéis visto, esta nueva tecnología de contenedores es muy interesante gracias a la seguridad adicional que nos proporciona en comparación con los contenedores habituales.
Puesta en marcha y ejemplo de uso
Si quieres utilizar los Kata Containers en lugar del habitual Docker, lo podemos hacer de forma muy sencilla a través de Container Station. Antes de explicar cómo instalarlo, debes saber lo siguiente:
- Para hacer funcionar un contenedor es necesario 1 vCPU y como mínimo 512MB de memoria RAM.
- No se pueden hacer modificaciones en la configuración de la VM.
- El modo «Network host» no se soporta.
- El modo privilegiado no es soportado actualmente.
- La conexión de una GPU no se soporta.
- Los cambios en el kernel o en la imagen initrd no se soportan.
Una vez que tenemos esto claro, abrimos Container Station como suele ser habitual, buscamos la app en la sección de Docker que nosotros queramos, ya sea en el listado o a través del buscador.
Como ejemplo, vamos a instalar Ubuntu en el Container Station. Para ello, elegimos «Install» en la versión de Ubuntu que nosotros queramos. Se nos desplegará un nuevo menú donde vamos a tener que elegir «Runtime: kata-runtime», de esta forma, estaremos usando esta nueva tecnología de contenedores en lugar de usar Docker. Por supuesto, luego tenemos que configurar si queremos el auto inicio, la configuración de vCPU, memoria RAM máxima y el resto de parámetros en la sección de «Advanced Settings». En este menú avanzado vamos a poder configurar las variables de entorno, la red, opciones en el propio dispositivo y también las carpetas compartidas con el contenedor, algo habitual con Docker.
Una vez que lo hayamos configurado, podemos ver el resumen de las configuraciones realizadas.
En la parte superior derecha podemos ver cómo se va creando el contenedor nuevo basado en kata, y nos indicará que se ha completado. Si nos vamos a la sección de «Container» vamos a poder ver todos los contenedores e interactuar con ellos.
Si abrimos el contenedor vamos a poder ejecutar comandos en nuestro sistema operativo Ubuntu, si hemos configurado la red correctamente y las carpetas compartidas, vamos a poder tener un Ubuntu como si estuviera en una VM.
Otras imágenes que tenemos disponibles en Container Station es Home Assistant, el popular sistema de domótica para el hogar. Vamos a poder desplegar un contenedor de forma fácil y rápida, tal y como podéis ver a continuación:
Tal y como podéis ver, ahora con Container Station vamos a poder ejecutar cualquier contenedor basado en Kata en lugar de Docker, para añadir una mayor seguridad a nuestro sistema.
Conclusiones
Esta nueva tecnología de contenedores nos aportará una mayor seguridad a la hora de desplegar diferentes contenedores en el mismo sistema, y es que el aislamiento y la arquitectura es claramente mejor que los contenedores habituales como Docker, tal y como hemos explicado. Sin embargo, tenemos un impacto en los requisitos hardware bastante importante, ya que es necesario disponer de 1vCPU y 512MB de memoria RAM para cada uno de los contenedores, por lo que es necesario un servidor NAS de QNAP bastante potente si queremos ejecutar decenas de contenedores, algo que con otras tecnologías como Docker no ocurre.
Se podría decir que los Kata Containers es una tecnología a medio camino entre una VM como lo que hace Virtualization Station, y los típicos contenedores de Docker. Si estás interesado en probar esta nueva tecnología, ahora puedes hacerlo de forma fácil y rápida con Container Station de QNAP, aunque nuestra recomendación es que lo hagas en un entorno de pruebas antes de pasarlo a producción.