Qu'est-ce que les conteneurs ?
Un conteneur est une unité de logiciel abstraite qui est une unité d'exécutable autonome qui a tout ce qui est nécessaire pour exécuter une application : le code, l'exécution, les outils de système et les bibliothèques de système. Les conteneurs ont des paramètres définis et peuvent exécuter un programme, une charge de travail ou une tâche spécifique.
Une analogie simple pour aider à comprendre les conteneurs est de penser aux conteneurs d'expédition. Vous pouvez transporter beaucoup de marchandises dans un contenant unique, et vous pouvez transporter beaucoup de conteneurs dans un même bateau ou les diviser sur plusieurs navires. Vous pouvez également utiliser des conteneurs spécialisés pour des charges de travail spécifiques, de la même manière que vous pourriez utiliser un conteneur d'expédition réfrigéré pour transporter un type de cargaison spécifique.
La seule restriction avec les conteneurs est qu'ils dépendent de leur noyau de système d'hôte. Un conteneur Linux peut fonctionner uniquement sur un hôte Linux, un conteneur Windows fonctionne sur un hôte Windows, et ainsi de suite pour les autres systèmes d'exploitation (OS).
Les avantages des conteneurs
Les conteneurs permettent aux gestionnaires de systèmes d'atteindre une plus grande densité avec leur architecture. Vous pouvez définir et exécuter plusieurs conteneurs, chacun étant adapté à une charge de travail spécifique pour une plus grande efficacité. Les conteneurs ne contiennent que ce dont vous avez besoin, ils ne sont donc pas gonflés de logiciels superflus et ils ne gaspillent pas les ressources de calcul dans des processus en arrière-plan.
Les entreprises découvrent l'extrême valeur de l'utilisation des conteneurs parce qu'ils sont portables, cohérents et faciles à utiliser. Les services informatiques peuvent permettre une intégration continue/une livraison continue (CI/CD) avec l'agilité et l'automatisation que procurent les conteneurs. Les conteneurs permettent également d'isoler les charges de travail, ce qui contribue à la mise en place de solides politiques de sécurité des données.
Les conteneurs ne contiennent que ce dont vous avez besoin, ils ne sont donc pas gonflés de logiciels superflus et ils ne gaspilleront pas de calculs supplémentaires dans des processus en arrière-plan.
Les machines virtuelles par rapport aux conteneurs
Comme les conteneurs, les machines virtuelles (VM) sont des environnements d'informatique autonomes qui sont abstraits du matériel. Contrairement aux conteneurs, les VM nécessitent une réplique complète d'un système d'exploitation pour fonctionner. Les VM offrent des avantages car vous pouvez utiliser une VM pour simuler un système d'exploitation différent du système d'hôte. Par exemple, si votre machine hôte fonctionne sous Windows, vous pouvez faire fonctionner un système d'exploitation Linux dans une machine virtuelle, et vice versa. Les VM permettent également une isolation et une sécurité des données encore plus grandes, étant des systèmes de calcul plus complètement isolés.
Cependant, comme les VM sont essentiellement des systèmes autonomes avec leur propre OS, elles prennent beaucoup plus de temps à démarrer que les conteneurs, et elles fonctionnent moins efficacement. Les conteneurs sont également plus portables, car une charge de travail complexe peut être répartie sur de nombreux conteneurs, qui peuvent être déployés n'importe où sur plusieurs systèmes ou infrastructures en nuage. Par exemple, vous pouvez déployer des charges de travail sur plusieurs conteneurs sur votre matériel sur site et votre service de Cloud public et gérer tout par le biais d'un seul tableau de bord d'orchestration. En raison de cette portabilité, les conteneurs s'adaptent plus efficacement que les VM.
Qu'est-ce que l'orchestration des conteneurs ?
L'orchestration est une méthodologie qui fournit une vue de haut en bas de vos conteneurs, vous donnant une visibilité et un contrôle sur l'endroit où les conteneurs sont déployés et comment les charges de travail sont réparties entre plusieurs conteneurs. L'orchestration est essentielle pour déployer plusieurs conteneurs. Sans orchestration, vous devez gérer chaque conteneur manuellement. L'orchestration permet également aux responsables informatiques d'appliquer des politiques, telles que la tolérance aux fautes, de manière sélective ou globale à une collection de conteneurs.
L'orchestration des conteneurs offre notamment la possibilité de gérer automatiquement les charges de travail sur plusieurs nœuds de calcul. (Les nœuds font référence à tout système connecté à un réseau). Par exemple, si vous avez cinq serveurs mais qu'un serveur lance un cycle de maintenance, l'orchestrateur peut automatiquement détourner la charge de travail vers les quatre serveurs restants et équilibrer la charge de travail en fonction de ce que les nœuds restants peuvent gérer. L'orchestrateur peut accomplir cette tâche sans assistance humaine.
Kubernetes et Docker
Kubernetes est une plateforme d'orchestration de conteneurs open source, conçue initialement par Google et est la solution de facto standard sur le marché aujourd'hui. Docker est également un logiciel open source qui est utilisé pour déployer un seul conteneur et est devenu la solution standard de facto pour son objectif.
Kubernetes travaille sur des solutions comme Docker pour déployer et gérer de multiples conteneurs. Ces deux solutions sont omniprésentes sur le marché, et bien qu'elles soient toutes deux open source, des offres propriétaires sont disponibles et complètent chaque ensemble de cadres avec des capacités et des outils supplémentaires. Si vous travaillez avec des conteneurs, Kubernetes et Docker deviendront des termes courants.
Cas d'utilisation de conteneurs
Comme indiqué précédemment, vous pouvez utiliser des conteneurs pour exécuter une tâche, un programme ou une charge de travail spécifique. Nous pouvons élargir notre compréhension du fonctionnement des conteneurs en examinant de plus près trois cas d'utilisation clés.
- Microservices : un microservice est une fonction spécifique dans un service ou une application plus large. Par exemple, vous pouvez utiliser un conteneur pour exécuter une fonction de recherche ou de recherche sur un ensemble de données, plutôt que de charger toute une application de base de données. Parce que cette opération fonctionne dans un environnement de conteneur, elle fonctionnera plus vite que dans un environnement de container que ce soit de VM ou de bare metal, avec un système d'exploitation complet et des processus de sauvegarde prenant en charge des ressources supplémentaires de calcul. Les conteneurs rendent le déploiement et l'utilisation des microservices plus simples et plus rapides.
- Cloud hybride et multicloud : dans un environnement de Cloud hybride, le conteneur devient votre unité de calcul de base qui est abstraite du matériel sous-jacent. Vous n'avez pas besoin de vous soucier de l'endroit où le conteneur fonctionne puisque vous pouvez exécuter le conteneur où que vous soyez. Les conteneurs facilitent donc le déploiement de charges de travail dans un environnement de Cloud hybride. Ce problème est généralement traité par la plateforme d'orchestration afin que les administrateurs puissent savoir où les conteneurs sont déployés et quelles sont les capacités offertes par chaque nœud, entre les locaux et les infrastructures de Cloud public. En ce qui concerne les pratiques de sécurité dans le modèle de Cloud hybride, les entreprises devraient toujours prêter attention à des préoccupations telles que l'authentification pour s'assurer que seul le personnel autorisé peut accéder aux charges de travail et aux données dans chaque conteneur. Toutefois, les entreprises peuvent s'attendre à ce que l'authentification fonctionne de manière plus simplifiée dans l'environnement des conteneurs.
- L'apprentissage machine : L'apprentissage machine et les charges de travail d'apprentissage approfondi posent des défis dans la mesure où leur complexité est élevée, où il y a beaucoup de pièces mobiles et où les opérateurs humains peuvent très peu intervenir et changer les choses dans un environnement conteneurisé. Pour ces charges de travail, la formation algorithmique tend à être le type le plus courant qui est déployé via des conteneurs. Les scientifiques et les chercheurs s'appuient souvent sur le marquage de la charge de travail, qui consiste à identifier et à faire correspondre les charges de travail aux nœuds dotés de capacités spécifiques. Sinon, les scientifiques utiliseront des conteneurs pour le traitement parallèle, qui est une méthode permettant de diviser de grands ensembles de données en morceaux et d'exécuter des algorithmes sur chaque morceau simultanément, afin de générer un résultat plus rapide.
Ce qu'offre Intel
Si vous utilisez plusieurs conteneurs sur un seul nœud, vous pouvez obtenir une bonne évolutivité tant que le nœud dispose des ressources de calcul nécessaires. C'est pourquoi le matériel est important. Un calcul plus poussé permet d'obtenir une densité plus élevée avec un plus grand nombre de conteneurs. La contribution d'Intel à cet espace comprend une offre complète d'architecture et de composants de serveur, notamment les processeurs Intel® Xeon® Scalable, la famille des unités de stockage SSD Intel® et les produits Ethernet Intel®. Ces technologies permettent une conteneurisation rapide, robuste, efficace et dense.
En termes de solutions logicielles, la NFD (Découverte des fonctionnalités des nœuds) est une contribution clé. La NFD a été développée par Intel et récemment ajoutée à la principale version open source de Kubernetes. Cette fonction permet à un orchestrateur d'identifier les technologies et les capacités clés - telles qu'Intel® AVX-512 - dans chaque nœud disponible. Si un administrateur système a une charge de travail qui nécessite Intel® AVX-512, Kubernetes peut utiliser NFD pour indiquer à l'administrateur quels nœuds offrent cette capacité, et l'administrateur peut déployer des conteneurs sur ces nœuds de manière spécifique.
Enfin, Intel permet la télémétrie pour la visibilité des performances au niveau du conteneur par rapport à chaque nœud activé. Plus précisément, Intel a fourni des compteurs de performance à l'outil de télémétrie open source de Google, cAdvisor. Cela permet aux entreprises de mesurer et d'établir un contrôle granulaire sur les performances des conteneurs, qui à son tour permet une plus grande optimisation, une meilleure adéquation de la charge de travail et une augmentation de la densité en déployant plus de conteneurs à chaque nœud.
Une promesse de grande valeur
Il est important de comprendre que les conteneurs ne sont pas seulement une tendance. Ils offrent des avantages en termes d'évolutivité, de portabilité et de sécurité, ce qui fera des conteneurs une méthodologie essentielle pour le déploiement de la charge de travail, tant aujourd'hui qu'à l'avenir. Si vous n'avez pas encore pensé aux conteneurs, le meilleur moment pour commencer est maintenant. Si vous avez déjà travaillé avec des conteneurs, l'étape suivante consiste à réfléchir à la manière de rendre vos conteneurs plus efficaces, plus performants et plus denses en utilisant la bonne architecture associée à des outils de télémétrie et de découverte de caractéristiques.