Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Déployer la prise en charge du plan de données Kubevirt DPDK pour les machines virtuelles

RÉSUMÉ Cloud-Native Contrail® Networking (CN2) prend en charge le déploiement de Kubevirt avec le plan de données DPDK vRouter pour une mise en réseau haute performance des machines virtuelles (VM) et des conteneurs dans Kubernetes.

Vue d’ensemble de Kubevirt

Kubevirt est un projet Kubernetes open source qui permet de gérer et d’ordonnancer des charges de travail de VM en même temps que des charges de travail de conteneur au sein d’un cluster Kubernetes. Kubevirt fournit une méthode d’exécution de machines virtuelles dans un environnement orchestré par Kubernetes.

Kubevirt fournit les fonctions supplémentaires suivantes à votre cluster Kubernetes. Les améliorations suivantes aident à prendre en charge Kubevirt dans un environnement de mise en réseau infonuagique :

  • D’autres types de pods, ou définitions de ressources personnalisées (CRD), vers le serveur d’API Kubernetes.

  • Contrôleurs pour une logique à l’échelle du cluster afin de prendre en charge les nouveaux types de pods.

  • Démons pour une logique spécifique au nœud afin de prendre en charge les nouveaux types de pods.

Kubevirt crée et gère des VirtualMachineInstance objets (VMI). Une VMI est une instanciation d’une VM. En d’autres termes, lorsque vous créez une machine virtuelle, la machine virtuelle associée à cette machine virtuelle représente l’instance ou l’état unique de cette machine virtuelle. Les VMI vous permettent d’arrêter et de lancer des VM à un autre moment sans modification des données ou de l’état. En cas de défaillance d’une machine virtuelle, elle aide à la restaurer. Kubevirt permet aux machines virtuelles de s’exécuter dans l’environnement orchestré par Kubernetes.

Kubevirt et le routeur DPDK

Kubevirt ne prend généralement pas en charge la mise en réseau de l’espace utilisateur pour le traitement rapide des paquets. Dans CN2, cependant, les améliorations permettent à Kubevirt de prendre en charge vhostuser les types d’interface pour les machines virtuelles. Un vhostuser type d’interface est une interface réseau virtuelle qui permet une communication hautes performances entre une machine virtuelle et une application de l’espace utilisateur. Ces interfaces effectuent la mise en réseau de l’espace utilisateur avec le vRouter du kit de développement de plan de données (DPDK) et donnent aux pods et aux machines virtuelles Kubevirt l’accès aux performances et au traitement des paquets améliorés fournis par le vRouter DPDK.

Voici quelques-uns des avantages de l’application DPDK vRouter :

  • Le traitement des paquets s’effectue dans l’espace utilisateur et contourne l’espace noyau. Ce contournement augmente l’efficacité du traitement des paquets.

  • Les interruptions du noyau et les changements de contexte ne se produisent pas car les paquets contournent l’espace du noyau. Ce contournement permet de réduire la surcharge du processeur et d’augmenter le débit de données.

  • DPDK améliore le plan de transfert du vRouter dans l’espace utilisateur, augmentant ainsi les performances.

  • Les Lcores DPDK s’exécutent en mode poll. Ce mode permet aux Lcores de recevoir et de traiter les paquets immédiatement après les avoir reçus.

Kubevirt utilise le routeur virtuel DPDK comme solution de mise en réseau haute performance pour les machines virtuelles s’exécutant dans Kubernetes. Au lieu de s’appuyer sur la mise en réseau par défaut basée sur le noyau, Kubevirt s’intègre à DPDK vRouter pour accélérer le traitement des paquets pour les machines virtuelles.

Déployer Kubevirt

Conditions préalables

Vous devez disposer d’un cluster Kubernetes actif et de la possibilité d’utiliser le kubectl client pour déployer Kubevirt.

Extraire des images Kubevirt et déployer Kubevirt à l’aide d’un registre local

Pour plus d’informations sur le déploiement de Kubevirt, consultez la rubrique suivante : Extraire des images Kubevirt et Déployer Kubevirt à l’aide d’un registre local.

Note:

Ces instructions s’appliquent aux versions suivantes de Kubevirt :

  • v0.58.0 (actuel)

  • v0.48.0

Lancer une machine virtuelle en même temps qu’un conteneur

Avec Kubevirt, le lancement et la gestion d’une machine virtuelle dans Kubernetes sont similaires au déploiement d’un pod. Vous pouvez créer un objet de machine virtuelle à l’aide de kubectl. Après la création d’un objet de machine virtuelle, celle-ci est active et en cours d’exécution dans votre cluster.

Utilisez les étapes de haut niveau suivantes pour lancer une machine virtuelle en même temps qu’un conteneur :

  1. Créez un VirtualNetworkfichier .

  2. Lancez une machine virtuelle.

Créer un réseau virtuel

L’objet suivant NetworkAttachmentDefinition est un exemple de réseau virtuel :

Lancer une machine virtuelle

Les spécifications suivantes VirtualMachine sont des exemples d’instances VirtualMachine avec un nombre variable d’interfaces :

Note:

Pour obtenir les dernières informations sur la version de l’API Kubevirt, reportez-vous à la documentation officielle de Kubevirt pour la dernière version : https://github.com/kubevirt/kubevirt.

  • VM à interface unique vhostuser :
  • VM à interface unique vhostuser avec paramètres CNI :

    Kubevirt vous permet également de spécifier un réseau à utiliser pour une machine virtuelle via les spec:network champs et domain:interfaces . Cette fonctionnalité est limitée car Kubevirt ne vous permet généralement pas de spécifier des paramètres réseau supplémentaires tels que "ips" ou "cni-args". Cependant, lorsque Kubevirt s'exécute dans un environnement CN2, vous pouvez définir des réseaux de machines virtuelles spécifiques dans le champ d annotations 'une machine virtuelle Kubevirt.

    Utilisez la clé k8s.v1.cni.cncf.io/networks, définissez vos réseaux personnalisés et spécifiez les paramètres supplémentaires souhaités. Le CNI CNI CN2 résout la configuration réseau personnalisée en remplissant les champs manquants.

    Par exemple, si vous spécifiez un "cni-args" paramètre, la machine virtuelle annotations, l’interface CNI CN2 tente de fusionner le réseau par défaut de la machine virtuelle Kubevirt avec le réseau spécifié par l’utilisateur, y compris des champs de paramètre supplémentaires.

    Notez le annotations champ. Dans cet exemple, cni-args active la fonctionnalité de vérification de l’état. Les réseaux vn-green personnalisés et vn-blue sont fusionnés avec le réseau de la machine virtuelle par défaut.

  • vhostuser Multi interface :
  • VM pont/vhostuser interface :