$30 off During Our Annual Pro Sale. View Details »

KubeVirt: Ejecutando máquinas virtuales en Kube...

KubeVirt: Ejecutando máquinas virtuales en Kubernetes

En esta presentación se explica KubeVirt, la tecnología que permite usar Kubernetes como una plataforma unificada para construir, modificar y desplegar aplicaciones residiendo en tanto contenedores y máquinas virtuales, con un entorno común y compartido.

Abdel G. Martínez L.

April 25, 2020
Tweet

More Decks by Abdel G. Martínez L.

Other Decks in Technology

Transcript

  1. Expositor Abdel Gadiel Martínez Lassonde Fundación de Tecnologías Libres de

    Panamá Vicepresidente Solusoft Director de Servicios Tecnológicos Universidad Interamericana de Panamá Docente de Pregrado
  2. La realidad actual… Cargas de Trabajo Virtualizadas No se van

    para ningún lado… por motivos técnicos y de negocio… Infraestructura y Orquestación de Contenedores Se está volviendo la plataforma estándar para nuevas aplicaciones… Aplicaciones Complejas Mientras ocurra la transición, las aplicaciones usarán ambas…
  3. KubeVirt - ¿Qué es? Tecnología que permite usar Kubernetes como

    una plataforma unificada para construir, modificar y desplegar aplicaciones residiendo en tanto contenedores y máquinas virtuales, con un entorno común y compartido. ❗ Se integra directamente en clústeres Kubernetes existentes ❗ Usa el alcance k8s-native cuando sea posible ❗ Se apalanca de integraciones k8s-native (CNI, CSI) https://kubevirt.io/
  4. KubeVirt – ¿Cuándo nace? Iniciado en Red Hat en 2016

    Fue liberado como proyecto de código abierto en 2017 Su licencia es Apache 2.0 En Septiembre 2019, fue incluido al CNCF Sandbox Tiene contribuciones de Akamai, Apple, Cisco, CloudFlare, Loodse, otros Es utilizado por Red Hat, SAP, Oracle, otros
  5. KubeVirt – ¿Cuáles son sus componentes? KubeVirt Operador de máquinas

    virtuales Containerized Data Importer (CDI) Importación de discos Containerized Virt-v2v Importación de toda una máquina virtuaol CSI/Ember Apalanca 80+ drivers de almacenamiento existentes OpenShift Web Console (opcional) Interfaz gráfica web
  6. KubeVirt – ¿Cómo es su arquitectura? ✅ La máquina virtual

    está dentro de un Pod ✅ La máquina virtual es ejecutada desde virt-launcher ✅ Utiliza libvirt… KVM cuando está disponible, emulación cuando no ✅ El volumen del contenedor hace referencia a la imagen de máquina virtual ✅ virt-launcher crea un dnsmasq en una dirección local ✅ Luego transfiere la IP a la máquina virtual ✅ virt-handler es responsible de detener, actualizar, reiniciar, estado ✅ Se comunica con libvirt vía socket (/var/run/kubevirt)
  7. KubeVirt – Conceptos: Cómputo VirtualMachine • Es un objeto de

    máquina virtual • No está asociado a ningún pod/proceso VirtualMachineInstance • Instancia de una máquina virtual cuando ha sido modificada o iniciada VMI Preset • Es la habilidad de establecer parámetros iniciales tales como almacenamiento y red; no obstante, pueden ser sobre-escritos
  8. KubeVirt – Conceptos: Imágenes Ephemeral Disk • VMI inmutable •

    Pierde los cambios luego del reinicio • La imagen de contenedor guarda las imágenes de las máquinas virtuales bajo /disk Persistent Disk • DataVolume • Copia el registro del disco dentro de un objeto tipo DataVolume
  9. KubeVirt – Conceptos: Containerized Data Importer (CDI) CDI • Las

    imágenes de disco pueden ser importadas utilizando containerized-data- importer • Es un utilitario declarativo de Kubernetes • Controller supervisa las peticiones • Es utilizado para cuando hay que halar discos a través de HTTP o copiar imágenes para un namespace de Kubernetes de sólo- lectura
  10. KubeVirt – Conceptos: Virtual to Virtual (virt-v2v) V2V • Las

    máquinas virtuales pueden ser importadas en KubeVirt usando virt-v2v • Puede ser de Vmware, libvirt y OVA • Las únicas limitantes son que aplican para máquinas virtuales con solamente una NIC y un disco adjunto
  11. KubeVirt – Conceptos: Almacenamiento Almacenamiento • Utiliza los siguientes: cloud-init,

    emptyDisks, hostDisks, DataVolume • También permite objetos primitivos de K8s tales como ConfigMap, Secret, ServiceAccount • Se mantienen los mismos conceptos • Permite la función de Live Migration, dependiendo de atributo ReadWriteMany AccessMode y en red (bridge deshabilita Live Migration)
  12. KubeVirt – Conceptos: Redes Pod • Por defecto utiliza la

    configuración del Pod Container Network Interface (CNI) • Multus – Adjuntar multiples NIC a Pods • Genie – Permite elegir Pod Network Single Root I/O Virtualization (SR-IOV) • Aislamiento de recursos PCI Express • Network Functions Virtualization (NFV)
  13. KubeVirt – ¿Cómo colaboro? 1. Sitio Web: https://kubevirt.io 2. Repositorio:

    https://github.com/kubevirt/ 3. Lista de Correos: https://groups.google.com/forum/#!forum/kubevirt-dev 4. IRC: #kubevirt en irc.freenode.net 5. Slack: #virtualization en kubernetes.slack.com
  14. Referencias 1. KubeVirt: https://kubevirt.io/ 2. KubeVirt User Guide: https://kubevirt.io/user-guide/#/ 3.

    KubeVirt API Reference: https://kubevirt.io/api-reference/ 4. KubeVirt Git Repo: https://github.com/kubevirt/kubevirt/ 5. CNCF Sandbox Project: https://www.cncf.io/sandbox-projects/ 6. CDI Git Repo: https://github.com/kubevirt/containerized-data-importer 7. v2v Git Repo: https://github.com/kubevirt/v2v-job 8. Web UI Git Repo: https://github.com/kubevirt/web-ui