2. Disclaimer
The views, thoughts, and opinions expressed in the text belong solely to the
author, and not necessarily to the author’s employer, organization, committee or
other group or individual.
3. Acerca de mi
● Universidad de Guadalajara (CUCEI) (2009-2013)
○ Gubian Linux (GNU/Linux OS)
● Gameloft (2013-2014)
● Intel (2014)
○ Clear Linux project
■ Clearstack (setup openstack)
■ Micro-config drive (setup VMs at boot time)
○ Containers
■ cc-oci-runtime
■ Clear Containers
■ Kata Containers
6. Containers
● Namespace: capa de software que
hace creer a los procesos que están
dentro que tienen una instancia
propia de un recurso global
(Network devices, ports, mount
points, hostname, etc), cambios a
esta instancia global son invisibles
para otros procesos.
http://man7.org/linux/man-pages/man7/namespaces.7.html
7. Containers
● Cgroup: un grupo de procesos a los
cuales se les puede limitar y
monitorear el uso de algún recurso
(CPU, Memory, disk, etc)
http://man7.org/linux/man-pages/man7/cgroups.7.html
20. Con las máquinas virtuales se
puede emular casi cualquier
dispositivo.
● Streaming de videojuegos
o aplicaciones móviles
Kata Containers corriendo Android
23. Kata Components
runtime (Host): Es el punto de entrada,
crea los kata containers.
proxy: (Host): Multiplexa la
comunicación entre el agente y los
shims.
agent (Guest): crea, monitorea y
comunica la comunicación los shims
con los containers.
shim (Host): es un espejo del container
que está dentro de la VM.
24. Kata Components
Hypervisor: El encargado de crear la
máquina virtual, actualmente Kata
Containers soporta varios
hipervisores:
● QEMU
● Firecracker
● NEMU
● ACRN
26. Serial Port
QEMU
Pros:
● Device soportado desde hace
mucho tiempo. No se necesita un
kernel reciente.
Cons:
● Un solo canal. Se necesita
multiplexar el canal.
● Bottleneck.
27. Virtio Sockets (vsock)
QEMU 2.8+
Pros:
● Es como un unix socket
● No es necesario multiplexor
Cons:
● Nuevo tecnología, se necesita
un kernel reciente (4.8+) en el
host (Usuario no quieren
actualizar)
28. vsocks
Ya no se necesita un multiplexor,
memory footprint pequeño
29. Hybrid vsocks
Firecracker 0.18+
Pros:
● Tecnología nueva, pero no se
necesita un kernel reciente en el
Host, solo en el Guest.
● No se necesita un multiplexor
Cons:
● Se tiene que especificar el puerto
con el cual se quiere conectar:
CONNECT <port>
32. 9p
Pros:
● No se necesita un kernel
reciente
Cons:
● Inseguro
● No es totalmente compatible
con POSIX
● Algunas distros no incluyen el
driver en su kernel
● Mal performance (lento)
33. virtio filesystem (virtiofs)
Usa FUSE y un demonio corre en el host para sincronizar los directorios
compartidos
Pros:
● ~10 veces mejor performance que 9p
Cons:
● “Aún no es estable”
● Un no es upstream
● Se necesitara versiones de QEMU & Kernel muy recientes
https://virtio-fs.gitlab.io/design.html
35. Cloud hypervisors
Virtual Machine Monitor (VMM) con soporte para KVM.
Diseñados para correr cargas de trabajo en la nube.
Creación rápida de máquinas virtuales ligeras, con una arquitectura limitada para
reducir el consumo de memoria y la superficie de ataque.
36. Firecracker
● Desarrollado y mantenido por Amazon
● Escrito en Rust
● Basado en crossvm
(https://chromium.googlesource.com/chromiumos/platform/crosvm/)
● Diseñado para correr máquinas virtuales ligeras, llamadas microVM
● https://firecracker-microvm.github.io/
37. QEMU
● Machine type: microvm
● Desarrollado y mantenido por RedHat
● Escrito en C/C++
● Sin soporte para PCI ni ACPI
● Los parches aún están siendo revisados
● https://www.qemu.org/
38. Cloud Hypervisor
● Desarrollado y mantenido por Intel
● Escrito en Rust
● Extender la funcionalidad de firecracker
○ Hot plug block devices, Memory and CPU
● Aún en desarrollo
● https://github.com/intel/cloud-hypervisor/
40. Como contribuir a Kata Containers
● Licencia Apache 2.0
● Juntas
○ Kata Containers AC meeting - Todos los martes de 10 - 11 am GDL timezone
■ https://zoom.us/j/837139405
● Pull requests
○ https://github.com/kata-containers
○ https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md