OpenShift virtualization : Une alternative à VMware dans un contexte confus…

Avec le récent rachat de VMware par Broadcom, de nombreuses entreprises se posent des questions sur l’avenir de leur infrastructure de virtualisation. Comme si on n’avait déjà pas assez de projets à gérer dans l’IT, Broadcom a dû penser qu’on risquait de s’ennuyer un peu, alors pourquoi ne pas secouer les choses avec l’acquisition de VMware ?

Voir dernier article sur LMI.

L’empreinte de VMware est peut-être lourde et imposante dans les systèmes d’information de nos entreprises. Plus de 95% des charges de travail sont virtualisées sur les hyperviseurs, et 85% des entreprises ont fait le choix d’exécuter leurs machines virtuelles sur ESXi. Pourtant, dans un monde où réduire le time-to-market est essentiel et où la transformation numérique est primordiale, ne serait-il pas judicieux de profiter de ce momentum pour repenser nos infrastructures ?

C’est peut-être le moment idéal pour soulever le capot de nos systèmes d’information, cartographier nos applications et envisager leur refactorisation en microservices sous forme de conteneurs. Quant à celles qui ne peuvent être transformées, pourquoi ne pas les conserver, soit sur la plateforme VMware, soit en migrant vers une plateforme moderne qui permet de faire cohabiter VM et conteneurs ? Une plateforme pensée et construite autour de Kubernetes, où les VM viennent coexister avec les conteneurs, et non l’inverse.

C’est ici qu’intervient OpenShift Virtualization de Red Hat. Mais comment cette technologie fonctionne-t-elle et quels sont ses composants clés ?

OpenShift Virtualization : Une solution unifiée

OpenShift Virtualization, composant natif de la plateforme OpenShift de Red Hat, permet de gérer et d’exécuter simultanément des conteneurs et des machines virtuelles sans nécessiter d’abonnement supplémentaire.

OpenShift Virtualization, basée sur le projet open source KubeVirt, permet aux Ops de gérer à la fois des applications en conteneurs et des machines virtuelles sur une seule et même plateforme. En d’autres termes, elle unifie l’orchestration de ces deux types de workloads au sein d’un cluster Kubernetes, simplifiant considérablement l’administration et permettant une flexibilité pour les environnements hybrides, Cloud public + Cloud privé + Co-location + Edge.

Cette solution permet d’exécuter des VM en parallèle des conteneurs sur OpenShift, tout en profitant des outils Kubernetes habituels : gestion déclarative, mise à l’échelle automatique, automatisation et haute disponibilité.

KubeVirt : Le projet de virtualisation natif Kubernetes de la CNCF

KubeVirt est un projet open source incubé (depuis avril 2022) par la Cloud Native Computing Foundation (CNCF). Il vise à combler le fossé entre les workloads des machines virtuelles (VM) et les environnements cloud-native, en permettant à Kubernetes de gérer les VM de la même manière qu’il orchestre les conteneurs.

Dans un environnement classique, Kubernetes gère uniquement des conteneurs. KubeVirt étend cette capacité en permettant à Kubernetes d’exécuter des VMs comme des ressources natives au sein du cluster.

Le projet s’appuie sur KVM (Kernel-based Virtual Machine) pour gérer la virtualisation, un hyperviseur de type 1, ce qui garantit des performances de VM quasi-natives tout en conservant l’orchestration automatisée de Kubernetes. KubeVirt est ainsi un pont idéal si vous souhaitez unifier la gestion de vos workloads, qu’elles soient conteneurisées ou non, tout en accélérant leur transition vers des architectures cloud-native.

Ce projet, sous la houlette de la CNCF, est une brique clé dans la solution OpenShift Virtualization de Red Hat, qui utilise KubeVirt pour orchestrer les machines virtuelles au sein de son écosystème.

Fonctionnement du moteur de virtualisation d’OpenShift

Comprendre la philosophie d’OpenShift Virt

Dans l’univers des infrastructures modernes, les conteneurs s’appuient sur les technologies Linux, comme les namespaces et les cgroups, pour isoler et gérer les ressources des processus. On imagine souvent ces processus comme des applications types Python, Java , ou autres binaires, mais en réalité, ils peuvent aussi bien être des outils système comme bash ou même des éditeurs comme vim ou Emacs.

Les machines virtuelles, de leur côté, ne sont finalement que des processus vus depuis l’hyperviseur. Mais ici, c’est un processus KVM qui s’occupe de l’exécution de la VM. Ce qui est intéressant avec OpenShift Virtualization, c’est que l’image du conteneur embarque tout ce dont la machine virtuelle a besoin : les outils, bibliothèques et binaires nécessaires. Si l’on jette un œil dans un pod de VM, on retrouve les processus qemu-kvm, ainsi que des utilitaires comme virsh pour la gestion de la VM.

Et puisque chaque machine virtuelle est encapsulée dans un pod, elle bénéficie de toutes les fonctionnalités Kubernetes : haute disponibilité, affinités,…
Mais contrairement aux pods classiques qui sont supprimés et reprogrammés sur d’autres nœuds, les VMs s’attendent à une migration à chaud. Pour cela, une CRD de migration live a été introduite, spécialement pour initier et gérer ces migrations de VM entre les nœuds.

Les composants clés d’OpenShift Virtualization

Pour bien comprendre le fonctionnement de cette solution, voici un aperçu des principaux composants:

  •  KubeVirt : KubeVirt est le moteur qui rend possible la virtualisation sur OpenShift. Il permet à Kubernetes de traiter les machines virtuelles comme des objets natifs du cluster, tout comme les pods ou les services.
  •  Virt-API : Ce composant expose une API RESTful pour la gestion des machines virtuelles au sein du cluster Kubernetes. Il gère les définitions des Custom Resource Definitions (CRD) liées aux VM.
  • Virt-Controller : Ce contrôleur est responsable du cycle de vie des machines virtuelles. Lorsqu’une VM est créée, mise à jour ou supprimée, c’est le Virt-Controller qui orchestre ces opérations.
  • Virt-Handler : Déployé via un DaemonSet, le Virt-Handler s’exécute sur chaque nœud du cluster et supervise les actions nécessaires pour maintenir l’état des machines virtuelles. C’est lui qui assure le bon fonctionnement des VM sur chaque nœud.
  • Virt-Launcher : À chaque création de VM, un pod dédié est lancé pour contenir cette VM. Le composant Virt-Launcher encapsule une instance de libvirtd, le daemon qui gère directement la VM à travers KVM (Kernel-based Virtual Machine).
  • Libvirtd : Libvirtd joue un rôle essentiel en tant que daemon chargé de gérer le cycle de vie des machines virtuelles à l’intérieur des pods. C’est un composant clé qui permet l’interaction entre l’hyperviseur KVM (Kernel-based Virtual Machine) et l’architecture Kubernetes.

Comment fonctionne le moteur de virtualisation d’OpenShift ?

Le moteur de virtualisation d’OpenShift repose sur l’intégration de KVM, l’hyperviseur du noyau Linux, avec Kubernetes via KubeVirt. Voici comment se déroule le processus de virtualisation :

  • Création de la VM : Lorsqu’une machine virtuelle est demandée, une Custom Resource Definition (CRD) est créée, définissant les paramètres et configurations de la VM.
  • Virt-API et Virt-Controller : Ces composants orchestrent la création de la VM et lancent un pod dédié pour héberger la machine virtuelle. À ce stade, Kubernetes traite cette VM comme n’importe quel autre objet natif, facilitant son intégration dans l’écosystème OpenShift.
  • Virt-Handler et Virt-Launcher : Virt-Handler sur le nœud cible initie le Virt-Launcher, qui est responsable de l’exécution de la VM. Virt-Launcher encapsule libvirtd, qui gère le cycle de vie de la VM via KVM.
  • Gestion de la VM : Une fois lancée, la VM peut être administrée comme un conteneur classique dans Kubernetes. OpenShift permet des fonctionnalités avancées comme la migration dynamique des VM (live migration) ou encore la scalabilité via les mêmes mécanismes utilisés pour les conteneurs.

Comparaison des fonctionnalités avec vSphere

Fonctionnalité OpenShift Virt vSphere

Where VM disks are stored

Persistent Volume Claim / Persistent Volume Datastore (VMFS, NFS, VSA, vvol)
Policy Based Storage Storage Class SPBM (Storage Policy BAsed Management)
Disk Resizing Yes Yes
VM-Migration Live-Migration vMotion
VM Storage migration N/A (à voir avec les CSM de Dell) Storage vMotion
Active Resource balancing Pod eviction policy DRS
Physical network configuration NMstate Operator, Multus vSwitch, DVSwitch
Overlay network configuration OVN-Kubernetes, CNI partners NSX-T
Host / VM metrics OpenShift metrics vCenter, Aria Operations

Conclusion 

OpenShift Virtualization est bien plus qu’une simple solution de virtualisation. Elle permet d’unifier la gestion des conteneurs et des machines virtuelles au sein de Kubernetes, offrant une approche moderne, flexible et efficace pour les entreprises en quête de simplification et d’innovation.

Dans le prochain post, nous regarderons de plus près l’offre de Dell Technologies ACP For Red Hat OpenShift, et l’outil de migration qui permettra de basculer une VM provenant d’un vCenter à OpenShift Virtualization.


Noham MEDYOUNI

Rédigé par

Noham MEDYOUNI

Noham MEDYOUNI, il exerce dans l’informatique depuis près de 18 ans et nourris ce blog depuis 2012. Diplômé de l’ENI Ecole, et avec plus de 12 années d’expérience pratique en tant que référent technique virtualisation. Par le passé il a travaillé en tant que Systems Engineer ou Solutions Architect pour de grandes ESN et éditeur de logiciel autour du Software Defined-Storage. Noham est certifié VCP3, 4 et 5, vExpert depuis 2014, Nutanix Technical Champion 2016 et NPP4, Veeam VMTSP, et Apple ACTC. Team Leader VMUG France.