La virtualisation OpenShift (projet en amont â Kubernetes : KubeVirt) Ă©tait autrefois connue sous le nom de Virtualisation native des conteneurs. Elle a Ă©tĂ© introduite comme une fonctionnalitĂ© de la plateforme OpenShift, conçue pour dĂ©ployer et gĂ©rer des machines virtuelles (VM) comme entitĂ©s de base de Kubernetes. Cette tĂąche est techniquement complexe en raison des diffĂ©rences fondamentales entre les technologies. Pour atteindre cet objectif, nous avons utilisĂ© des technologies bien connues basĂ©es sur Red Hat Enterprise Linux et KVM, qui sont avec nous depuis de nombreuses annĂ©es et ont fait leurs preuves. et Dans cet article, nous examinerons les aspects techniques de la virtualisation OpenShift qui permettent la coexistence des VM et des conteneurs au sein d'une mĂȘme plateforme, qui les gĂšre comme un tout.

TĂąches de calcul
Les conteneurs exploitent les mĂ©canismes du noyau Linux, comme les namespaces et les cgroups, pour isoler les processus et gĂ©rer les ressources. En gĂ©nĂ©ral, les processus peuvent ĂȘtre des applications Python, Java ou des fichiers exĂ©cutables, mais en rĂ©alitĂ©, il peut s'agir de n'importe quels processus, comme bash, Emacs ou vim.
Qu'est-ce qu'une machine virtuelle ? Du point de vue de l'hyperviseur, c'est aussi un processus. Mais il ne s'agit pas d'un processus d'application, mais d'un processus KVM, responsable de l'exécution d'une VM précise.
Une image de conteneur contient tous les outils, bibliothÚques et fichiers nécessaires à la machine virtuelle KVM. Si nous inspectons un pod de VM en cours d'exécution, nous y verrons des helpers et des processus qemu-kvm. De plus, nous avons accÚs aux outils KVM pour gérer les machines virtuelles, tels que qemu-img, qemu-nbd et virsh.

Puisque la machine virtuelle est un pod, elle hĂ©rite automatiquement de toutes les fonctionnalitĂ©s d'un pod au sein de Kubernetes. Les pods VM, tout comme les pods normaux, sont soumis Ă des schĂ©mas et Ă des critĂšres de planification tels que les taints, les tolerations, l'affinitĂ© et l'anti-affinitĂ©. Vous bĂ©nĂ©ficiez Ă©galement d'avantages tels qu'une haute disponibilitĂ©, etc. Cependant, il y a une diffĂ©rence importante : les pods normaux ne migrent pas d'hĂŽte Ă hĂŽte dans le sens habituel. Si un nĆud se dĂ©connecte, le pod qui s'y trouve s'interrompt et est rĂ©affectĂ© Ă un autre nĆud du cluster. En revanche, pour une machine virtuelle, nous nous attendons Ă une migration Ă chaud.

Pour combler cette lacune, une dĂ©finition de ressource personnalisĂ©e (CDR) a Ă©tĂ© créée, dĂ©crivant le mĂ©canisme de migration Ă chaud, qui est responsable de l'initialisation, du suivi et de la gestion des migrations Ă chaud des VM entre les nĆuds de travail.
Pour remĂ©dier Ă ce problĂšme, une dĂ©finition de ressource personnalisĂ©e (CDR) a Ă©tĂ© dĂ©veloppĂ©e, dĂ©crivant le mĂ©canisme de migration Ă chaud, chargĂ© de l'initialisation, de la surveillance et de la gestion des migrations Ă chaud des VM entre les nĆuds de travail.
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
name: migration-job
spec:
vmiName: fedora
Lors de la dĂ©sactivation d'un nĆud pour les machines virtuelles qui ont la stratĂ©gie d'Ă©viction dĂ©finie sur la migration en direct, des tĂąches de migration sont automatiquement créées. Cela permet de contrĂŽler le comportement des machines virtuelles lors des dĂ©placements entre les nĆuds du cluster. Vous pouvez configurer la migration en direct et gĂ©rer les VM comme d'autres pods.
Réseau
Tout systĂšme Kubernetes assure la communication entre les nĆuds et les pods via des rĂ©seaux SDN logiciels. OpenShift ne fait pas exception et, Ă partir de la version 3, utilise par dĂ©faut OpenShiftSDN pour cela. De plus, avec OpenShift 4, une nouvelle fonctionnalitĂ© appelĂ©e Multus est apparue, permettant d'accĂ©der Ă plusieurs rĂ©seaux et de connecter des pods Ă ceux-ci simultanĂ©ment.

Avec Multus, l'administrateur peut dĂ©finir des rĂ©seaux CNI supplĂ©mentaires qui seront ensuite dĂ©ployĂ©s et configurĂ©s dans le cluster par un opĂ©rateur spĂ©cial Cluster Network Operator. Les pods se connectent ensuite Ă un ou plusieurs de ces rĂ©seaux, gĂ©nĂ©ralement au standard OpenShiftSDN et Ă une interface supplĂ©mentaire. Les appareils SR-IOV, les ponts Linux standards, les appareils MACVLAN et IPVLAN peuvent Ă©galement ĂȘtre utilisĂ©s si nĂ©cessaire pour votre VM. L'illustration ci-dessous montre comment dĂ©finir Multus CNI pour un rĂ©seau de pont sur l'interface eth1 :
apiVersion: operator.openshift.io/v1
kind: Network
metadata:
name: cluster
spec:
additionalNetworks:
- name: multus1
rawCNIConfig: '{ "cniVersion": "0.3.1", "type": "bridge", "master": "eth1", "ipam":
{ "type": "static", "addresses": [ { "address": "191.168.1.1/24" } ] } }'
type: Raw
En ce qui concerne la virtualisation OpenShift, cela signifie que les VM peuvent se connecter directement Ă un rĂ©seau externe, contournant le SDN. Cela est important pour les machines virtuelles migrĂ©es vers OpenShift depuis Red Hat Virtualization ou VMware vSphere, car avec un accĂšs au deuxiĂšme niveau OSI, il n'y aura pas de changement dans les paramĂštres rĂ©seau. Cela signifie Ă©galement que la VM peut avoir une adresse rĂ©seau, les accĂšs contournant le SDN. Ainsi, nous pouvons utiliser efficacement des adaptateurs rĂ©seau spĂ©cialisĂ©s ou nous connecter directement au stockage en rĂ©seauâŠ
Pour en savoir plus sur la crĂ©ation et la connexion de machines virtuelles OpenShift virtualization au rĂ©seau, vous pouvez . De plus, , dĂ©ployĂ© dans le cadre de l'OpenShift virtualization, offre une autre façon bien connue de crĂ©er et de gĂ©rer des configurations rĂ©seau sur les nĆuds physiques utilisĂ©s par les hyperviseurs.
Stockage
La connexion et la gestion des disques des machines virtuelles dans OpenShift virtualization s'effectue Ă l'aide de concepts Kubernetes tels que les StorageClasses, les PersistentVolumeClaims (PVC) et les PersistentVolume (PV), ainsi que des protocoles de stockage standards pour l'environnement Kubernetes. Ainsi, les administrateurs Kubernetes et les Ă©quipes responsables des applications disposent d'un mĂ©canisme de gestion unifiĂ© et familier pour les conteneurs et les machines virtuelles. Pour de nombreux administrateurs d'environnements de virtualisation, ce concept peut sembler familier, car il utilise le mĂȘme principe de sĂ©paration des fichiers de configuration des VM et des disques, qui est appliquĂ© dans OpenStack et sur de nombreuses autres plateformes cloud.
Cependant, il n'est pas possible de crĂ©er un nouveau disque pour chaque VM, car lors de la migration d'un hyperviseur vers OpenShift, nous devons conserver les donnĂ©es. MĂȘme lorsque nous dĂ©ployons une nouvelle VM, il est toujours plus rapide de le faire Ă partir d'un modĂšle que de le crĂ©er de zĂ©ro. Ainsi, nous avons besoin de la fonctionnalitĂ© d'importation des disques existants.
Pour simplifier cette tùche, OpenShift virtualization déploie le projet Containerized Data Importer (CDI), qui réduit l'importation des images de disque provenant de plusieurs sources à la création d'une entrée dans le PVC.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "fedora-disk0"
labels:
app: containerized-data-importer
annotations:
cdi.kubevirt.io/storage.import.endpoint: "http://10.0.0.1/images/Fedora-Cloud-Base-31-1.9.x86_64.qcow2"
spec:
storageClassName: ocs-gold
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
C'est cette entrée qui active le CDI, déclenchant la séquence d'actions illustrées ci-dessous :

Une fois le CDI terminĂ©, le PVC contiendra un disque de machine virtuelle prĂȘt Ă l'emploi et converti au format standard d'OpenShift...
Lorsque vous travaillez avec OpenShift virtualization, OpenShift Container Storage (OCS) peut Ă©galement ĂȘtre utile. C'est une solution Red Hat basĂ©e sur le systĂšme de fichiers Ceph, qui met en Ćuvre des fonctionnalitĂ©s de stockage persistant pour les conteneurs. En plus des mĂ©thodes d'accĂšs PVC standard - RWO (bloc) et RWX (fichier) - OCS fournit RWX pour les pĂ©riphĂ©riques de bloc brut, ce qui est trĂšs utile pour organiser un accĂšs bloc partagĂ© pour des applications Ă fortes exigences de performance. De plus, OCS prend en charge le nouveau standard de demande de groupe d'objets, l'Object Bucket Claim, permettant aux applications d'utiliser directement le stockage d'objets.
Machines virtuelles dans des conteneurs
Si vous souhaitez vérifier comment cela fonctionne, sachez qu'OpenShift virtualization est déjà disponible en version Tech Preview dans OpenShift 3.11 et versions ultérieures. Les détenteurs d'un abonnement actif à OpenShift peuvent bénéficier d'OpenShift virtualization complÚtement gratuitement et sans démarches supplémentaires. Au moment de la publication de cet article, les versions actuelles sont OpenShift 4.4 et OpenShift virtualization 2.3 ; si vous utilisez des versions antérieures, il est conseillé de mettre à jour pour bénéficier des derniÚres fonctionnalités. La version pleinement prise en charge d'OpenShift virtualization devrait sortir dans la seconde moitié de 2020.
Pour plus d'informations, veuillez consulter pour les instructions d'installation, y compris , qui fournit des informations sur la configuration des réseaux externes.
Source : habr.com
