Container Linux

distribution Linux

Container Linux
Logo

État du projet Abandonné au profit de Fedora CoreOS et RHEL CoreOS
Plates-formes x86-64
Entreprise /
Développeur
Red Hat
Licence Apache License 2.0
Première version Voir et modifier les données sur Wikidata
Site web https://coreos.com/os/docs/latest/

Container Linux (anciennement CoreOS Linux) était un système d'exploitation léger open source basé sur le noyau Linux et conçu pour fournir une infrastructure aux déploiements en cluster, tout en se concentrant sur l'automatisation, la facilité de déploiement des applications, la sécurité, la fiabilité et l'évolutivité. En tant que système d'exploitation, Container Linux ne fournit que les fonctionnalités minimales requises pour déployer des applications à l'intérieur de conteneurs logiciels, ainsi que des mécanismes intégrés pour la découverte de services et le partage de configuration[1],[2],[3],[4].

Container Linux partage des fondations avec Gentoo Linux[5],[6], Chrome OS et Chromium OS via un kit de développement logiciel commun (SDK). Container Linux ajoute de nouvelles fonctionnalités et personnalisations à cette fondation partagée pour prendre en charge du matériel et des cas d'utilisation supplémentaire[3],[7] :7:02. Début 2015, CoreOS est activement développé, principalement par Alex Polvi, Brandon Philips et Michael Marineau, avec ses principales fonctionnalités disponibles en version stable[8],[9],[10].

L'équipe CoreOS Linux a annoncé la fin de vie de Container Linux le 26 mai 2020[11], en proposant Fedora CoreOS[12] et RHEL CoreOS comme remplaçants, tous deux basés sur Red Hat.

Aperçu modifier

Container Linux ne fournit aucun gestionnaire de packages comme moyen de distribuer des applications, exigeant à la place que toutes les applications s'exécutent à l'intérieur de leurs conteneurs. Servant d'hôte de contrôle unique, une instance Container Linux utilise les fonctionnalités de virtualisation sous-jacentes au niveau du système d'exploitation du noyau Linux pour créer et configurer plusieurs conteneurs qui fonctionnent comme des systèmes Linux isolés. De cette façon, le partitionnement des ressources entre les conteneurs est effectué via plusieurs instances d'espace utilisateur isolées, au lieu d'utiliser un hyperviseur et de fournir des machines virtuelles à part entière. Cette approche repose sur les fonctionnalités des cgroups et des espaces de noms du noyau Linux [13],[14] qui fournissent, ensemble, des capacités pour limiter, prendre en compte et isoler l'utilisation des ressources ( CPU, mémoire, E / S disque, etc.) pour les collections de processus de l'espace utilisateur[15],[4],[16].

Initialement, Container Linux utilisait exclusivement Docker comme composant fournissant une couche supplémentaire d'abstraction et d'interface [17] aux fonctionnalités de virtualisation au niveau du système d'exploitation du noyau Linux, ainsi que de fournir un format standardisé pour les conteneurs qui permet aux applications de s'exécuter dans des environnements différents[2],[16]. En décembre 2014, CoreOS a publié et a commencé à prendre en charge rkt (initialement publié sous le nom de Rocket ) en tant qu'alternative à Docker, fournissant à travers lui un autre format standardisé des images de conteneur d'application, la définition de l'environnement d'exécution du conteneur et un protocole de découverte et de récupération des images de conteneurs[18],[19],[20],[21]. CoreOS fournit rkt comme une implémentation de la spécification dite du conteneur d'application (appc) qui décrit les propriétés requises de l' application container image (ACI); CoreOS a lancé appc et ACI sous la forme d'un ensemble de spécifications indépendantes pilotées par un comité [22],[23] - comité indépendant des éditeurs de systèmes d'exploitation - visant à les intégrer à l'Open Container Initiative (OCI) ; initialement appelé Open Container Project ou OCP [24] )

Le standard de conteneurisation a été annoncé [Par qui ?] en juin 2015[25],[26],[27].

Container Linux utilise des scripts ebuild de Gentoo Linux pour la compilation automatisée de ses composants système[5],[6], et utilise systemd comme son système d'initialisation principal avec une intégration étroite entre systemd et divers mécanismes internes de Container Linux[2],[28].

Infrastructure de cluster modifier

 
Une illustration de haut niveau de l'architecture de cluster CoreOS [29]

Container Linux fournit etcd, un daemon qui s'exécute sur tous les ordinateurs d'un cluster et fournit un registre de configuration dynamique, permettant de partager facilement et de manière fiable, diverses données de configuration entre les membres du cluster[30],[31]. Étant donné que les données de valeur-clé stockées dans etcd sont automatiquement distribuées et répliquées avec une élection maître automatisée et l'établissement d'un consensus à l'aide de l'algorithme Raft, toutes les modifications des données stockées sont reflétées sur l'ensemble du cluster, tandis que la redondance obtenue empêche les défaillances des membres du cluster de provoquer une perte de données[21],[32]. En plus de la gestion de la configuration, etcd fournit également la découverte de services en permettant aux applications déployées de s'annoncer et lister les services qu'elles offrent. La communication avec etcd est faite via une API REST exposée sur HTTP , qui communique en JSON; l'API peut être utilisée directement (via curl ou wget , par exemple), ou indirectement par etcdctl , qui est un utilitaire de ligne de commande spécialisé également fourni par CoreOS[2],[4],[33],[34],[35]. Etcd est également utilisé dans le logiciel Kubernetes .

Container Linux fournit également fleet gestionnaire de cluster qui contrôle les instances systemd distinctes de Container Linux. Depuis 2017, fleet n'est plus activement développée et est déconseillée au profit de Kubernetes[36]. En utilisant fleetd , Container Linux crée un système d'initialisation distribué qui relie des instances systemd distinctes à un etcd à l’échelle du déploiement[32] ; en interne, fleetd démon communique avec le systemd local à travers le D-Bus, et avec le etcd du déploiement via l'API exposée par le etcd. L'utilisation de fleetd permet le déploiement d'un ou de plusieurs conteneurs à l'échelle du cluster, avec des options plus avancées, notamment la redondance, le basculement, le déploiement sur des membres de cluster spécifiques, les dépendances entre les conteneurs et le déploiement groupé de conteneurs. Un utilitaire de ligne de commande appelé fleetctl est utilisé pour configurer et surveiller ce système d'initialisation distribué[37]; en interne, il communique avec le fleetd daemon en utilisant une API basée sur JSON sur de l'HTTP, cette API peut également être utilisée directement. Lorsqu'il est utilisé en local sur un membre du cluster, fleetctl communique avec l'instance locale du fleetd sur un socket de domaine Unix ; lorsqu'il est utilisé à distance, le tunneling SSH est utilisé avec une authentification fournie via des clés SSH publiques[38],[39],[40],[41],[42].

Tous les daemons et utilitaires de ligne de commande mentionnés ci-dessus ( etcd , etcdctl , fleetd et fleetctl ) sont écrits en Go et distribués sous les termes de la licence Apache 2.0[43].

Déploiement modifier

Lorsqu'il s'exécute sur du matériel dédié, Container Linux peut être installé de manière permanente sur le stockage local, tel qu'un disque dur (HDD) ou un disque SSD [44] ou démarré à distance sur un réseau à l' aide de Preboot Execution Environment (PXE) ) en général, ou iPXE comme l'une des implémentations du PXE[45],[46]. CoreOS prend également en charge les déploiements sur diverses plates-formes de virtualisation, notamment Amazon EC2, DigitalOcean, Google Compute Engine, Microsoft Azure, OpenStack, QEMU / KVM, Vagrant et VMware[4],[47],[48],[49]. Container Linux peut également être installé sur Citrix XenServer, notant qu'il existe un "modèle" pour CoreOS.

Container Linux peut également être déployé via sa distribution commerciale appelée Tectonic, qui s'intègre avec Kubernetes de Google en tant qu'utilitaire de gestion de cluster. Avril 2015, Tectonic a été proposé en tant que logiciel bêta pour une sélection de clients[22],[50]. De plus, CoreOS fournit Flannel en tant que composant implémentant un réseau de superposition requis principalement pour l'intégration avec Kubernetes[51],[52].

Technologies modifier

  • Kubernetes (K8s) est un système open source permettant d’automatiser le déploiement, la mise à l’échelle et la gestion des applications conteneurisées[53].
  • Docker est une surcouche qui simplifie le développement et le déploiement des conteneurs tout en les standardisant[54].
  • OpenShift est une plateforme de conteneurs d’applications libres, utilisant principalement Docker et Kubernetes, qui est chargé du démarrage et du « scaling » des conteneurs[55].

Dérivés modifier

À la suite de son acquisition de CoreOS, Inc. [56] en janvier 2018, Red Hat a annoncé [57] qu'il fusionnerait CoreOS Container Linux avec le projet Atomic de Red Hat, pour créer un nouveau système d'exploitation, Red Hat CoreOS, tout en alignant la communauté open source de Fedora Project autour de Fedora CoreOS, combinant les technologies des deux prédécesseurs.

Un fork open-source de CoreOS a donné lieu à la formation du projet Flatcar-linux.

Accueil modifier

LWN.net a examiné CoreOS en 2014[58]: « For those who are putting together large, distributed systems—web applications being a prime example—CoreOS would appear to have a lot of interesting functionality. It should allow applications of that type to grow and shrink as needed with demand, as well as provide a stable platform where upgrades are not a constant headache. For "massive server deployments", CoreOS, or something with many of the same characteristics, looks like the future. »

Voir également modifier

Références modifier

  1. « CoreOS Linux is now Container Linux », coreos.com (consulté le )
  2. a b c et d Libby Clark, « Brandon Philips: How the CoreOS Linux Distro Uses Cgroups » [archive du ], Linux.com, (consulté le )
  3. a et b « CoreOS – a new approach to Linux-based server systems », itnews2day.com, (consulté le )
  4. a b c et d « CoreOS documentation: Using CoreOS », coreos.com (consulté le )
  5. a et b « Building development images: Updating portage-stable ebuilds from Gentoo », coreos.com (consulté le )
  6. a et b « Distributions based on Gentoo », gentoo.org, (consulté le )
  7. Brian Harrington, « CoreOS: Anatomy of a CoreOS update », youtube.com, Rackspace, (consulté le )
  8. Alex Polvi, « CoreOS Stable Release », coreos.com, (consulté le )
  9. « CoreOS Release Notes », coreos.com (consulté le )
  10. Brandon Philips, « etcd 2.0 Release – First Major Stable Release », coreos.com, (consulté le )
  11. « Tout savoir sur CoreOS et CoreOS Container Linux », sur redhat.com (consulté le ).
  12. (en) « Documentation de Fedora CoreOS », sur Fedora Docs (consulté le ).
  13. Jonathan Corbet, « Notes from a container », LWN.net, (consulté le )
  14. Jake Edge, « Control group namespaces », LWN.net, (consulté le )
  15. Libby Clark, « Brandon Philips: How the CoreOS Linux Distro Uses Cgroups » [archive du ], Linux.com, (consulté le )
  16. a et b « CoreOS documentation: Using Docker with CoreOS » [archive du ], coreos.com (consulté le )
  17. « Docker 0.9: Introducing execution drivers and libcontainer », docker.com, (consulté le )
  18. Libby Clark, « CoreOS Co-Founder Alex Polvi Talks Containers, Rocket vs. Docker, and More », Linux.com, (consulté le )
  19. Charles Babcock, « Rocket Containers: How CoreOS Plans To Challenge Docker », informationweek.com, (consulté le )
  20. Alex Polvi, « CoreOS is building a container runtime, rkt », coreos.com, (consulté le )
  21. a et b Josh Berkus, « New etcd, appc, and Rocket releases from CoreOS », LWN.net, (consulté le )
  22. a et b Josh Berkus, « CoreOS Fest and the world of containers, part 1 », LWN.net, (consulté le )
  23. Nathan Willis, « The Rocket containerization system », LWN.net, (consulté le )
  24. (en) Neil McAllister, « Docker and chums unveil standards org for software containers », The Register,‎ (lire en ligne, consulté le )
  25. (en) Frederic Lardinois, « Docker, CoreOS, Google, Microsoft, Amazon and others come together to develop common container standard », TechCrunch,‎ (lire en ligne, consulté le )
  26. « Industry Leaders Unite to Create Project for Open Container Standards » [archive du ], opencontainers.org, (consulté le )
  27. Neil McAllister, « Open Container Project renames, says standard is just weeks away: Linux Foundation, Docker and friends opt for Open Container Initiative », The Register, (consulté le )
  28. « CoreOS documentation: Using systemd with CoreOS » [archive du ], coreos.com (consulté le )
  29. Mark Moudy, « CoreOS + Docker Development Environment Demo », github.com, (consulté le )
  30. Timothy Prickett Morgan, « CoreOS Hyperscales Linux By Making It Invisible », nextplatform.com, (consulté le )
  31. Phil Whelan, « Alex Polvi Explains CoreOS » [archive du ], activestate.com, (consulté le )
  32. a et b Jonathan Corbet, « Etcd and fleet », LWN.net, (consulté le )
  33. « CoreOS documentation: Using etcd with CoreOS », coreos.com (consulté le )
  34. « CoreOS documentation: Getting started with etcd », coreos.com (consulté le )
  35. Brandon Philips, « etcd @ GoSF », speakerdeck.com, (consulté le )
  36. Wood, « Container orchestration: Moving from fleet to Kubernetes », coreos..com, CoreOS
  37. Justin Ellingwood, « How To Use Fleet and Fleetctl to Manage your CoreOS Cluster », digitalocean.com, (consulté le )
  38. « CoreOS documentation: Launching containers with fleet », coreos.com (consulté le )
  39. « CoreOS documentation: Using the client », coreos.com (consulté le )
  40. « coreos/fleet: fleet/README.md at master », github.com, (consulté le )
  41. « coreos/fleet: fleet/Documentation/deployment-and-configuration.md at master (Deploying fleet) », github.com, (consulté le )
  42. « coreos/fleet: fleet/Documentation/api-v1.md (fleet API v1) », github.com, (consulté le )
  43. « coreos/fleet: fleet/LICENSE at master », github.com, (consulté le )
  44. « CoreOS documentation: Installing CoreOS to disk », coreos.com (consulté le )
  45. « CoreOS documentation: Booting CoreOS via PXE », coreos.com (consulté le )
  46. « CoreOS documentation: Booting CoreOS via iPXE », coreos.com (consulté le )
  47. Alex Crawford, « CoreOS Image Now Available On DigitalOcean », coreos.com, (consulté le )
  48. Jack Clark, « Google brings futuristic Linux software CoreOS onto its cloud », The Register, (consulté le )
  49. Alex Crawford, « CoreOS Now Available On Microsoft Azure », coreos.com, (consulté le )
  50. (en) By Steven J. Vaughan-Nichols, « CoreOS is bringing Google's Kubernetes to the enterprise », ZDNet,‎ (lire en ligne, consulté le )
  51. Eugene Yakubovich, « Introducing flannel: An etcd-backed overlay network for containers », coreos.com, (consulté le )
  52. « Tutorial on using CoreOS Flannel for Docker », slideshare.net, (consulté le )
  53. « La meilleure solution d'orchestration de conteneurs en production », sur kubernetes.io (consulté le ).
  54. « Conteneur, Docker, fonctionnement et avantages pour héberger ses applications ? – Alfa-Safety » (consulté le ).
  55. « Construire et déployer ses applications avec OpenShift », sur Nexworld, (consulté le ).
  56. (en) Rosoff, « Red Hat pays $250 million for CoreOS, a start-up that sells Google-developed technology », CNBC, (consulté le )
  57. « Fedora CoreOS, Red Hat CoreOS, and the future of Container Linux | CoreOS », coreos.com (consulté le )
  58. CoreOS: A different kind of Linux distribution, LWN.net.