vSphere IaaS control plane offre une fonctionnalité de service de machine virtuelle qui permet aux ingénieurs DevOps de déployer et d'exécuter des machines virtuelles, en plus de conteneurs, dans un environnement Kubernetes partagé commun. Vous pouvez utiliser le service de VM pour gérer le cycle de vie des machines virtuelles dans un espace de noms. Le service de VM gère les machines virtuelles autonomes et les machines virtuelles qui constituent les clusters Tanzu Kubernetes Grid.

Le service de VM répond aux besoins des équipes DevOps qui utilisent Kubernetes, mais qui ont des charges de travail existantes basées sur des machines virtuelles qui ne peuvent pas être facilement mises en conteneur. Il permet également aux utilisateurs de réduire la surcharge de gestion d'une plate-forme non-Kubernetes parallèlement à une plate-forme de conteneur. Lors de l'exécution de conteneurs et de machines virtuelles sur une plate-forme Kubernetes, les équipes DevOps peuvent consolider l'emplacement de la charge de travail sur une seule plate-forme.

Note : Outre les machines virtuelles autonomes, le service de VM gère les machines virtuelles qui constituent des clusters Tanzu Kubernetes Grid. Pour plus d'informations sur les clusters, reportez-vous à la documentation Utilisation du service TKG avec le plan de contrôle IaaS vSphere.
Le service de machine virtuelle gère les machines virtuelles autonomes et les machines virtuelles qui constituent les clusters Tanzu Kubernetes Grid

Chaque machine virtuelle déployée via le service de VM fonctionne comme une machine complète exécutant tous les composants, notamment son propre système d'exploitation, au-dessus de l'infrastructure de vSphere IaaS control plane. La machine virtuelle a accès à la mise en réseau et au stockage fournis par un Superviseur et est gérée à l'aide de la commande Kubernetes kubectl standard. La machine virtuelle s'exécute comme un système entièrement isolé protégé des interférences produites par d'autres machines virtuelles ou charges de travail dans l'environnement Kubernetes.

Quand convient-il d'utiliser des machines virtuelles sur une plate-forme Kubernetes ?

En général, la décision d'exécuter des charges de travail dans un conteneur ou dans une machine virtuelle dépend des besoins et des objectifs de votre entreprise. Parmi les raisons d'utiliser des machines virtuelles, citons les suivantes :

  • Vos applications ne peuvent pas être mises en conteneur.
  • Vous avez des exigences matérielles spécifiques pour votre projet.
  • Les applications sont conçues pour un noyau personnalisé ou un système d'exploitation personnalisé.
  • Les applications sont mieux adaptées à l'exécution dans une machine virtuelle.
  • Vous souhaitez avoir une expérience Kubernetes cohérente et éviter toute surcharge. Plutôt que d'utiliser des ensembles distincts d'infrastructure pour vos plates-formes de conteneur et non-Kubernetes, vous pouvez consolider ces piles et les gérer avec une commande kubectl connue.

Concepts du service de VM

Pour décrire l'état d'une machine virtuelle à déployer dans un Espace de noms vSphere, vous utilisez des paramètres tels qu'une classe de machine virtuelle, une image de machine virtuelle et une classe de stockage. Le service de VM regroupe ensuite ces spécifications pour créer des machines virtuelles autonomes ou des machines virtuelles qui prennent en charge les clusters Tanzu Kubernetes Grid.

La spécification de machine virtuelle rassemble la classe de machine virtuelle, l'image de machine virtuelle et la classe de stockage pour créer une machine virtuelle
Service de VM
Le service de VM est un composant de vSphere IaaS control plane qui fournit une API de type Kubernetes déclarative pour la gestion des machines virtuelles et des ressources vSphere associées. Le service de VM permet aux administrateurs vSphere de fournir à Kubernetes des ressources et des modèles, tels que des classes et des images de machine virtuelle. Les ingénieurs DevOps peuvent utiliser ces ressources pour décrire l'état souhaité d'une machine virtuelle. Une fois que les ingénieurs DevOps ont spécifié l'état de la machine virtuelle, le service de VM convertit l'état souhaité à un état réalisé par rapport aux ressources d'infrastructure de soutien.

Une machine virtuelle créée via le service de VM peut uniquement être gérée à partir de l'espace de noms Kubernetes avec les commandes kubectl. Les administrateurs vSphere ne peuvent pas gérer la machine virtuelle à partir de vSphere Client, mais peuvent afficher ses détails et surveiller les ressources qu'elle utilise. Pour plus d'informations, consultez Surveiller les machines virtuelles disponibles dans vSphere IaaS control plane.

Classe de VM
La classe de machine virtuelle est une spécification de machine virtuelle qui peut être utilisée pour demander un ensemble de ressources pour une machine virtuelle. La classe de machine virtuelle est contrôlée et gérée par un administrateur vSphere, et définit des paramètres tels que le nombre de CPU virtuels, la capacité de mémoire et les paramètres de réservation. Les paramètres définis sont garantis par les ressources d'infrastructure sous-jacentes d'un Superviseur.

Un administrateur vSphere peut créer des classes de VM personnalisées.

En outre, la gestion de la charge de travail offre plusieurs classes de machine virtuelle par défaut. En général, chaque type de classe par défaut est livré en deux éditions : garantie et meilleur effort. Une édition garantie réserve entièrement les ressources demandées par une spécification de machine virtuelle. Ce n'est pas le cas pour une édition de classe meilleur effort, car elle permet de surcharger des ressources. En général, un type garanti est utilisé dans un environnement de production.

Voici des exemples de classes de machine virtuelle par défaut.

Classe CPU Mémoire (Go) CPU et mémoire réservés
guaranteed-large 4 16 Oui
best-effort-large 4 16 Non
guaranteed-small 2 4 Oui
best-effort-small 2 4 Non

L'administrateur vSphere peut attribuer n'importe quel nombre de classes de machine virtuelle existantes pour les rendre disponibles aux ingénieurs DevOps dans un espace de noms spécifique.

La classe de machine virtuelle fournit une expérience simplifiée pour les ingénieurs DevOps. Les ingénieurs DevOps n'ont pas besoin de comprendre la configuration complète de chaque machine virtuelle qu'il prévoit de créer. Ils peuvent plutôt sélectionner une classe de machine virtuelle parmi les options disponibles, et le service de VM gère la configuration de la machine virtuelle.

Côté Kubernetes, les classes de machine virtuelle s'affichent sous la forme de ressource VirtualMachineClass.

Image de VM
Une image de machine virtuelle est un modèle qui contient une configuration logicielle, notamment un système d'exploitation, des applications et des données.

Lorsque les ingénieurs DevOps créent des machines virtuelles, ils peuvent sélectionner des images dans la bibliothèque de contenu associée à l'espace de noms. Pour les ingénieurs DevOps, les images sont exposées en tant qu'objets VirtualMachineImage.

Un administrateur vSphere peut créer des images de machine virtuelle compatibles avec vSphere IaaS control plane et les télécharger dans une bibliothèque de contenu.

Bibliothèque de contenu
Un ingénieur DevOps utilise une bibliothèque de contenu comme source d'images pour créer une machine virtuelle. Comme pour les classes de machine virtuelle, un administrateur vSphere attribue des bibliothèques de contenu existantes à un espace de noms ou un cluster pour les rendre disponibles aux ingénieurs DevOps. L'administrateur vSphere peut également rendre la bibliothèque de contenu de l'espace de noms accessible en écriture. Cette autorisation supplémentaire permet aux utilisateurs DevOps de publier leurs images dans la bibliothèque.
Classe de stockage
Le service de VM utilise des classes de stockage pour placer des disques virtuels et attacher dynamiquement des volumes persistants. Pour plus d'informations sur les classes de stockage, reportez-vous à la section Utilisation du stockage persistant avec les charges de travail du Superviseur dans vSphere IaaS control plane.
Spécification de VM
Les ingénieurs DevOps décrivent l'état souhaité d'une machine virtuelle dans un fichier YAML qui regroupe l'image de VM, la classe de VM et la classe de stockage.
VM Operator pour Kubernetes
VM Operator permet de gérer les machines virtuelles avec une API déclarative de style Kubernetes.
À partir de vSphere 8.0 Update 3, vSphere IaaS control plane prend en charge VM Operator v1alpha2. Entre autres avantages, cette version offre les fonctionnalités suivantes :
  • Prise en charge améliorée des fournisseurs de démarrage, y compris la prise en charge en ligne de Cloud-Init et Windows.
  • Amélioration de la configuration de la mise en réseau de l'invité.
  • Capacités d'état augmentées.
  • Prise en charge des portails de disponibilité définis par l'utilisateur.
  • Nouvelle API VirtualMachineWebConsoleRequest.

Outre les nouvelles modifications d'API spécifiques à v1alpha2, la plupart des autres API dans v1alpha2 peuvent fonctionner conjointement avec v1alpha1. La plupart des champs des spécifications de VM sont rétrocompatibles avec v1alpha1.

Après la publication de v1alpha2, vous pouvez continuer à utiliser les objets v1alpha1. Tous les objets v1alpha1 sont convertis automatiquement en v1alpha2 à l'aide de Webhooks de conversion intégrés dans VM Operator.

Pour plus d'informations sur VM Operator v1alpha2 et les champs pris en charge, reportez-vous à la page https://vm-operator.readthedocs.io/en/stable/ref/api/v1alpha2/.

Mise en réseau
Le service de VM n'a pas de configuration requise spécifique et repose sur la configuration réseau disponible dans vSphere IaaS control plane. Le service de VM prend en charge deux types de mise en réseau, la mise en réseau vSphere ou NSX. Lorsque des machines virtuelles sont déployées, un fournisseur de réseau disponible alloue des adresses IP statiques aux machines virtuelles. Pour plus d'informations, reportez-vous à la section Mise en réseau de superviseur dans la documentation de Concepts et planification du plan de contrôle IaaS vSphere.

Service de VM et Superviseur avec zones vSphere

Lorsque vous créez des machines virtuelles sur un Superviseur à trois zones, l'instance de machine virtuelle est répliquée dans toutes les zones disponibles. Pour contrôler le placement des machines virtuelles via le fichier YAML, l'équipe DevOps peut utiliser l'étiquette Kubernetes topology.kubernetes.io/zone. Par exemple, topology.kubernetes.io/zone: zone-a02.

Workflow pour le provisionnement et la surveillance d'une machine virtuelle

En tant qu'administrateur vSphere, vous définissez des garde-fous pour la stratégie et la gouvernance des machines virtuelles, et vous livrez des ressources de machine virtuelle, telles que des classes et des modèles de machine virtuelle aux ingénieurs DevOps. Après le déploiement d'une machine virtuelle, vous pouvez la surveiller à l'aide de vSphere Client.

Étape Effectuée par Description
1 Administrateur vSphere Créer des bibliothèques de contenu et les attribuer à un espace de noms ou un Superviseur
2 Administrateur vSphere Créer une classe de machine virtuelle et l'attribuer à un espace de noms

Pour utiliser NVIDIA vGPU, configurez un périphérique PCI dans la classe de machine virtuelle. Reportez-vous à la section Déploiement d'une machine virtuelle avec vGPU et d'autres périphériques PCI dans vSphere IaaS control plane.

3 Ingénieur DevOp Provisionner une machine virtuelle dans un espace de noms Kubernetes

Pour les machines virtuelles du cluster Tanzu Kubernetes Grid, reportez-vous à la section Utilisation du service TKG avec le plan de contrôle IaaS vSphere.

4 Administrateur vSphere Surveiller les machines virtuelles déployées
5 Ingénieur DevOps Publier une image de machine virtuelle dans une bibliothèque de contenu