Hyper-V : avec la virtualisation imbriquée Windows Server 2016 s’ouvre aux conteneurs
En permettant d’empiler des couches de virtualisations les unes sur les autres (comme dans un gâteau), le nouvel OS serveur de Microsoft rattrape son retard sur VMware et ouvre grand la porte aux conteneurs.
Avec la montée en puissance de Windows Server 2016, vous allez entendre parler de « virtualisation imbriquée » (ou « nested virtualization »). D'abord parce qu'il s'agit d'une nouveauté d’Hyper-V Server 2016, mais aussi et surtout parce qu’elle a des implications sur une autre technologie qui fait beaucoup parler d'elle : la virtualisation par conteneurs.
La virtualisation classique repose d’une part sur un hyperviseur (ici Hyper-V) qui s'exécute sur le matériel physique, et d’autre part sur des machines virtuelles (VM) qui s'exécutent sur cet hyperviseur. Pendant longtemps en tout cas dans la sphère Windows Server et Hyper-V, seul ce modèle de virtualisation était possible.
La virtualisation imbriquée pour sa part permet à une VM d'héberger une autre VM. Chose que Windows Server 2016 rend possible. Désormais, un OS serveur invité peut s'exécuter sur une VM Hyper-V pour héberger d'autres VM Hyper-V. Ce procédé ajoute en quelque sorte une deuxième couche de virtualisation, comme dans un « layered cake » (un gâteau anglo-saxon à plusieurs couches).
Ce n’est pas une révolution pour l’IT. La virtualisation imbriquée est supportée depuis longtemps par d'autres hyperviseurs, VMware pour ne pas le citer. L'ajout de cette fonctionnalité à Windows Server 2016 ne constitue donc pas une avancée technologique majeure, mais il permet de combler le fossé fonctionnel entre Hyper-V Server 2016 et ses concurrents.
Mais pourquoi imbriquer des VM dans des VM ?
La « nested virtualization » présente en fait plusieurs atouts. Comme déployer plus facilement des environnements complexes de test et/ou de démonstration d'infrastructures réseau et serveur. Ou mieux simuler des environnements de production (la VM qui héberge la simulation peut déployer des VM invitées en son sein qui seront en fait des VM hôtes dans les conditions de production).
Mais le plus grand atout de la virtualisation imbriquée dans Hyper-V est la prise en charge des conteneurs.
La virtualisation Hyper-V imbriquée ouvre la voie aux conteneurs
De plus en plus populaires, les conteneurs sont un nouvel outil de virtualisation, plus léger et plus flexibilité que les VM pour développer et déployer les applications.
Ils bénéficient d’un isolement moindre que par rapport aux VM classiques. Les ressources de l’OS hôtes sont en effet communes à tous les conteneurs qui s'exécutent sur cet hôte (fichiers système, annuaires, services en exécution). En contrepartie, ce partage améliore l'efficacité.
En effet, si vous exécutez trois conteneurs différents (trois invités) sur un hôte Windows Server, une seule copie de l'annuaire Windows suffit. Ce partage réduit les coûts et allège les conteneurs.
Résultat, vous disposez de plus de place sur chaque serveur pour exécuter les conteneurs, en comparaisons avec des VM classiques, plus isolées, mais qui ne partagent rien et ont qui tendance à réclamer davantage de duplication.
Utilité des conteneurs pour les administrateurs
Les conteneurs sont intéressants à plusieurs titres pour les administrateurs Windows. En premier, ils offrent un cadre mental aux développeurs qui leur permet d’aller au plus près du fonctionnement réel du code.
Cela signifie que les développeurs peuvent coder entièrement une application, mais aussi créer une version personnalisée et adaptées des environnements nécessaires à l'exécution du code. Les développeurs créent des images conteneurs du code et de l’environnement qui sont ensuite envoyées aux administrateurs.
Les conteneurs n’ont plus qu’à être exécutés en l'état, en tant qu'invités sur un hôte. Les mises à jour peuvent être traitées de la même manière, rapidement et simplement.
Mieux, les images conteneurs peuvent ne concerner qu’une petite « partie » de l'application ; ce qui permet de décomposer cette application en plusieurs composants indépendants – reliés ensuite entre eux - et facilite son fonctionnement dans un environnement de microservices.
Plus largement, l'utilisation de conteneurs facilite la vie des développeurs qui peuvent écrire le bon code pour le bon environnement. L'utilisation de conteneurs, avec leurs environnements de serveur adapté au code, réduit les points de tension entre les services opérationnels et les développeurs. Auparavant, les développeurs espéraient certaines configurations, mais ils n'avaient que rarement la possibilité de changer les environnements de production pour répondre à leurs attentes. Avec les conteneurs, les administrateurs déploient les images et passent moins de temps à se demander si le code qui ne fonctionne pas plante à cause d’une configuration serveur.
Dit autrement, ils peuvent passer plus de temps à gérer l'infrastructure et leur plateforme.
Gestion des conteneurs
La gestion de conteneurs de Microsoft s’appuie sur les API de Docker et d'autres outils. Les conteneurs Windows Server font en effet partie du projet global open source Docker.
Quel est l’intérêt de Docker dans tout cela ? Docker fournit une « couche de gestion » des API et des moteurs pour contrôler les conteneurs. Or Docker est open source et largement utilisé. Le Docker Hub, utilisable par tous, est un référentiel de type marketplace des applications qui s'exécutent dans les conteneurs de style Docker. Un atout non négligeable.
VMware a pris en charge les conteneurs depuis plus longtemps que Hyper-V. Son offre est bien pensée, et vSphere Integrated Containers fonctionne également avec Docker. Ces outils sont très évolués. Mais ils ne fonctionnent qu'avec les conteneurs Linux.