Container Linux

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche

Container Linux
Logo

État du projet En développement
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) est 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] .

Aperçu[modifier | modifier le code]

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 [11],[12] 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[13],[4],[14].

Initialement, Container Linux utilisait exclusivement Docker comme composant fournissant une couche supplémentaire d'abstraction et d'interface [15] 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],[14]. 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[16],[17],[18],[19]. 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é [20],[21] - 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 [22] )

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

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],[26].

Infrastructure de cluster[modifier | modifier le code]

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

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[28],[29]. É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[19],[30]. 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],[31],[32],[33] . 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[34]. 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[30] ; 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é[35]; 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[36],[37],[38],[39],[40].

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[41].

Déploiement[modifier | modifier le code]

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 [42] 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. [43],[44] 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],[45],[46],[47]. 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[20],[48]. De plus, CoreOS fournit Flannel en tant que composant implémentant un réseau de superposition requis principalement pour l'intégration avec Kubernetes[49],[50].

Dérivés[modifier | modifier le code]

Suite à son acquisition de CoreOS, Inc. [51] en janvier 2018, Red Hat a annoncé [52] 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.

Accueil[modifier | modifier le code]

LWN.net a examiné CoreOS en 2014[53]: « 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 | modifier le code]

Les références[modifier | modifier le code]

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

Liens externes[modifier | modifier le code]