{"id":612,"date":"2019-10-12T11:29:32","date_gmt":"2019-10-12T09:29:32","guid":{"rendered":"http:\/\/loeilduse.fr\/?p=612"},"modified":"2021-09-16T17:28:15","modified_gmt":"2021-09-16T15:28:15","slug":"des-containers-physiques-ou-virtuels","status":"publish","type":"post","link":"https:\/\/loeilduse.fr\/?p=612&lang=fr","title":{"rendered":"Des containers physiques ou virtuels ?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Se poser la question d&#8217;ex\u00e9cuter des containers directement sur des serveurs physiques dit &#8220;Bare Metal&#8221; versus sur des serveurs virtuels dit des VMs est l\u00e9gitime, surtout lorsqu&#8217;on utilise un orchestrateur de container comme Kubernetes. Pour chaque nouvelle architecture applicative on me pose la question : est-il n\u00e9cessaire de mettre en place une architecture virtuelle pour ces types d&#8217;application ou pour d&#8217;autres : SAP HANA, HADOOP, MONGO DB, CASSANDRA, &#8230;. et donc aussi Kubernetes ? L&#8217;\u00e9l\u00e9ment d\u00e9clencheur de cette r\u00e9flexion est de vouloir faire l&#8217;\u00e9conomie du co\u00fbt de l&#8217;hyperviseur. Mais ce dernier \u00e0 beaucoup d&#8217;avantages op\u00e9rationnel, s\u00e9curitaire, d&#8217;extensibilit\u00e9 et de souplesse. \u00a0Si vous \u00eates d\u00e9j\u00e0 convaincu par la n\u00e9cessit\u00e9 de s&#8217;appuyer sur une architecture de virtualisation et vous pensez partir sur un hyperviseur dit gratuit, je vous invite \u00e0 lire cet article :\u00a0<a href=\"http:\/\/loeilduse.fr\/?p=138\" target=\"_blank\" rel=\"noopener noreferrer\">&#8220;C\u2019est gratuit ! ?&#8221;<\/a>.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Les containers vont s&#8217;ex\u00e9cuter sur un porte containers. Un porte container est un syst\u00e8me d&#8217;exploitation en g\u00e9n\u00e9ral Linux sur lequel vont s&#8217;ex\u00e9cuter les container. Sur du Bare Metal, on va maximiser le nombre d&#8217;ex\u00e9cution de containers alors que dans une VM on va \u00e0 l&#8217;inverse plut\u00f4t minimiser le nombre d&#8217;ex\u00e9cution de containers voire 1 container par VM. Pour que ce soit efficace ou pertinent, il ne faut pas partir sur des VMs classiques mais sur des micros VMs sur lesquels est install\u00e9 un syst\u00e8mes d&#8217;exploitation \u00e9pur\u00e9 de services inutiles, durci (s\u00e9curit\u00e9 renforc\u00e9e) et optimis\u00e9 pour les containers de sortes \u00e0 ce qu&#8217;ils consomment tr\u00e8s peu de ressources et d\u00e9marrent en quelques millisecondes.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Tout syst\u00e8me d&#8217;exploitation a ses contraintes, ses limites et ses faiblesses :<\/span><\/p>\n<ul style=\"text-align: justify;\">\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Sur un syst\u00e8me d&#8217;exploitation, le nombre de container est limit\u00e9 (Exemple pour Kubernetes :\u00a0<a href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\">https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/<\/a>), la r\u00e8gle est la m\u00eame pour un porte container bas\u00e9 sur une machine virtuelle. Par contre, un serveur de virtualisation h\u00e9bergera plusieurs VMs soit autant de porte container \u00e0 hauteur des ressources physiques disponibles soit : Max Container par OS x Nombre de VM porte containers par serveur de virtualisation.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">En Bare Metal, le porte containers est en contact directe avec le mat\u00e9riel. Les composants physiques du serveur doivent \u00eatre compatibles avec le syst\u00e8me d&#8217;exploitation et ses drivers. La virtualisation elle, fait abstraction et le porte container n&#8217;a plus \u00e0 se soucier de la compatibilit\u00e9 du mat\u00e9riel et des drivers associ\u00e9s, vous pouvez changer de fournisseurs de serveurs et des composants.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Le syst\u00e8me d&#8217;exploitation du porte container doit \u00eatre maintenu \u00e0 jour et les op\u00e9rations de maintenance auront un impact sur tous les containers qui y sont h\u00e9berg\u00e9s. Avec une approche VM, l&#8217;impact sera limit\u00e9 car comme expliqu\u00e9 juste avant, on privil\u00e9gie peu de container par VM porte container voire m\u00eame 1 container par VM.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Le porte container est d\u00e9di\u00e9 \u00e0 un usage : dev, prod, pr\u00e9-prod, &#8230;, donc si toutes les ressources ne sont pas utilis\u00e9es pour cet usage, il y aura beaucoup de perte (\u20ac\u20ac\u20ac). Avec la virtualisation, les serveurs physiques peuvent h\u00e9berger des VMs porte containers de diff\u00e9rents usages et la consommation des ressources sont ainsi optimales.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">En Bare Metal, le porte container ex\u00e9cutera un seul syst\u00e8me d&#8217;exploitation. Avec une infrastructure virtualis\u00e9e, un serveur physique peut h\u00e9berger des porte containers, Windows et diff\u00e9rents types de Linux.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Les solutions d&#8217;orchestration comme Kubernetes orchestre des containers mais pas le provisionnement de porte containers. L&#8217;orchestrateur utilise les ressources physiques qu&#8217;il a \u00e0 sa disposition \u00e0 un instant T et s&#8217;il en manque, il faut rajouter un serveur, mais ce n&#8217;est pas lui qui va le faire, il va s&#8217;appuyer sur un IaaS (Infrastructure As A Service). En environnement virtualis\u00e9 le d\u00e9ploiement de porte containers consiste au d\u00e9ploiement de VMs. Les IaaS bas\u00e9s sur des VMs sont beaucoup plus commun que ceux bas\u00e9s sur des serveurs physiques.<\/span><\/li>\n<li style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Quid des performances ? Et bien l\u00e0 aussi un <span style=\"text-decoration: underline;\">bon hyperviseur<\/span> permet de gagner en performance, vSphere tire mieux parti des architecture NUMA que les syst\u00e8mes d&#8217;exploitation du march\u00e9 et permet ainsi d&#8217;avoir un gain de performance. Un test comparatif a \u00e9t\u00e9 effectu\u00e9 par VMware sur des applications Web :\u00a0<a href=\"https:\/\/www.vmware.com\/content\/dam\/digitalmarketing\/vmware\/en\/pdf\/techpaper\/performance\/docker-vsphere65-weathervane-perf.pdf\">https:\/\/www.vmware.com\/content\/dam\/digitalmarketing\/vmware\/en\/pdf\/techpaper\/performance\/docker-vsphere65-weathervane-perf.pdf<\/a><\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">L&#8217;isolation des containers entres eux, m\u00eame si elle fonctionne correctement, elle peut avoir un gros impact sur tous les containers en cas de faille de s\u00e9curit\u00e9. La virtualisation offre en plus, une isolation inter VMs donc inter porte containers beaucoup plus robuste et plus vous limitez le nombre de containers par VM plus la s\u00e9curit\u00e9 sera renforc\u00e9e.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Ne vous inqui\u00e9tez pas sur la consommation des ressources par un porte container VM. Si un OS classique consomme des ressources et met du temps \u00e0 d\u00e9marrer, un OS optimis\u00e9s pour l&#8217;h\u00e9bergement des containers (Micro OS comme\u00a0<a href=\"https:\/\/vmware.github.io\/photon\/assets\/files\/photon-os-datasheet.pdf\">Photon OS<\/a>), consomment peut de ressources et d\u00e9marre en quelques millisecondes. De plus un bon hyperviseur \u00e0 des optimisations de consommation de ressources lorsque des OS identiques sont ex\u00e9cut\u00e9s en m\u00eame temps.<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Un container doit pouvoir d\u00e9marrer sur n&#8217;importe quel porte container d&#8217;un cluster (regroupement des ressources de plusieurs serveurs), s&#8217;il a besoin de persistance des donn\u00e9es, il doit pouvoir y a acc\u00e9der depuis n&#8217;importe o\u00f9 et pour cela, il faut un syst\u00e8me de fichiers partag\u00e9 en g\u00e9n\u00e9ral un export NFS externe qu&#8217;il faut maintenir. La virtualisation propose un syst\u00e8me de fichier partag\u00e9 natif qui est compl\u00e8tement int\u00e9gr\u00e9. Sur vSphere ce syst\u00e8me de fichiers peut s&#8217;appuyer sur pratiquement n&#8217;importe quelle baie de stockage du march\u00e9. L&#8217;utilisation de la solution hyper converg\u00e9e vSAN offre n\u00e9anmoins beaucoup plus d&#8217;avantages qui sont d\u00e9taill\u00e9s dans cet article :\u00a0<a href=\"http:\/\/loeilduse.fr\/?p=43\" target=\"_blank\" rel=\"noopener noreferrer\">Pourquoi vSAN (HCI : Hyper Convergence Infrastructure)<\/a><\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">J&#8217;ai apport\u00e9 une liste non exhaustive des avantages \u00e0 utiliser la virtualisation pour des containers, si vous avez encore des doutes, je vous invite \u00e0 v\u00e9rifier sur quel type d&#8217;architecture s&#8217;ex\u00e9cute les offres de containers as a service propos\u00e9es par les grands acteurs du Cloud Publics. D&#8217;ailleurs RedHat et VMware ont annonc\u00e9 lors du Red Hat Summit de mai 2019 une architecture de r\u00e9f\u00e9rence pour la solution Red Hat OpenShift bas\u00e9e sur le SDDC VMware : <a href=\"https:\/\/octo.vmware.com\/vmware-red-hat-bring-red-hat-openshift-vmware-sddc\/\">https:\/\/octo.vmware.com\/vmware-red-hat-bring-red-hat-openshift-vmware-sddc\/<\/a>.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Les offres autour de Kubernetes ne cessent d&#8217;\u00e9voluer, VMware vient d&#8217;annoncer \u00e0 VMworld 2019 le\u00a0<a href=\"https:\/\/www.vmware.com\/products\/vsphere\/projectpacific.html\" target=\"_blank\" rel=\"noopener noreferrer\">Projet Pacific<\/a>, une nouvelle \u00e9volution de l&#8217;hyperviseur vSphere qui int\u00e9gra nativement l&#8217;orchestrateur Kubernetes et les portes containers, ca fera l&#8217;objet d&#8217;un nouvel article \ud83e\udd14\ud83d\ude09.<\/span><\/p>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Se poser la question d&#8217;ex\u00e9cuter des containers directement sur des serveurs physiques dit &#8220;Bare Metal&#8221; versus sur des serveurs virtuels dit des VMs est l\u00e9gitime, surtout lorsqu&#8217;on utilise un orchestrateur de container comme Kubernetes. Pour chaque nouvelle architecture applicative on me pose la question : est-il n\u00e9cessaire de mettre en place une architecture virtuelle pour<\/p><\/div>\n<div class=\"blog-btn\"><a href=\"https:\/\/loeilduse.fr\/?p=612&#038;lang=fr\" class=\"home-blog-btn\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,111,5,112,1,9,44,48],"tags":[101,32,26,123,27,136,125,126,127,99,116,29,28,110,100,109,106,105,113,134,135,107,40,103,124,114,117,118,115,104,6,102],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/612"}],"collection":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=612"}],"version-history":[{"count":24,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/612\/revisions"}],"predecessor-version":[{"id":1152,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=\/wp\/v2\/posts\/612\/revisions\/1152"}],"wp:attachment":[{"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loeilduse.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}