Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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. ici et iciDans 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.

Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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.

Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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.

Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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.

Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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 ici. De plus, nmstate operator, 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 :

Virtualisation OpenShift : conteneurs, KVM et machines virtuelles

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 la documentation d'OpenShift pour les instructions d'installation, y compris la section sur la configuration de Multus, qui fournit des informations sur la configuration des réseaux externes.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster