Ir al contenido

Container Linux

De Wikipedia, la enciclopedia libre
Container Linux
Información general
Tipo de programa distribución Linux
Desarrollador Equipo de desarrollo de CoreOS
Modelo de desarrollo código abierto
Lanzamiento inicial 3 de octubre de 2013
Discontinuación 26 de mayo de 2020
Licencia licencia Apache
Estado actual Fin de ciclo de vida anunciado
Información técnica
Plataformas admitidas x86-64
Lanzamientos
Container Linux
Fedora CoreOS
Enlaces

Container Linux(anteriormenteCoreOS Linux) es unsistema operativocódigo abiertobasado en elnúcleo Linuxy diseñado para proporcionar infraestructura a implementaciones enclúster,mientras se enfoca en la automatización, facilidad de implementación de aplicaciones, seguridad, confiabilidad yescalabilidad.Como sistema operativo, Container Linux proporciona solo la funcionalidad mínima requerida para implementar aplicaciones dentro decontenedores de software,junto con mecanismos integrados para el descubrimiento de servicios y el uso compartido de configuración.[1][2][3][4]

Container Linux comparte fundamentos conGentoo Linux,[5][6]Chrome OSyChromium OSa través de unkit de desarrollo de softwarecomún (SDK). Container Linux agrega nuevas funciones y personalización a esta base compartida para admitir elhardwarede servidor y los casos de uso.[3][7]​ A enero de 2015, CoreOS es desarrollado activamente, principalmente por Alex Polvi, Brandon Philips y Michael Marineau, con sus principales características disponibles comoversión estable.[8][9][10]

El equipo de desarrollo de CoreOS anunció el fin de ciclo de vida de Container Linux para el 26 de mayo de 2020,[11]​ ofreciendo como reemplazo las distribuciones Fedora CoreOS[12]​ o RHEL CoreOS, ambos basados enRed Hat.

Visión general

[editar]

Container Linux no proporciona unadministrador de paquetescomo una forma de distribuir aplicaciones de carga útil, lo que requiere que todas las aplicaciones se ejecuten dentro de sus contenedores. Al funcionar como un único host de control, una instancia de Container Linux utiliza las características devirtualización a nivel de sistema operativosubyacentes del núcleo Linux para crear y configurar varios contenedores que funcionan como sistemasLinuxaislados. De esa manera, la partición derecursosentre contenedores se realiza a través de múltiples instancias deespacio de usuarioaisladas, en lugar de usar unhipervisory proporcionarmáquinas virtualescompletas. Este enfoque se basa en las funcionalidades decgroupsynamespacesdel núcleo Linux,[13][14]​ que en conjunto proporcionan capacidades para limitar, contabilizar y aislar el uso de recursos (CPU,memoria,E/Sde almacenamiento, etc.) para las colecciones deprocesosde espacio de usuario.[2][4][15]

Inicialmente, Container Linux utilizó exclusivamenteDockercomo un componente que proporciona una capa adicional de abstracción einterfaz[16]​ a las características de virtualización a nivel del sistema operativo del núcleo Linux, además de proporcionar un formato estandarizado para contenedores que permite que las aplicaciones se ejecuten en diferentes ambientes.[2][15]​ En diciembre de 2014, CoreOS lanzó y comenzó a admitirrkt(inicialmente lanzado comoRocket) como una alternativa a Docker, proporcionando a través de él otro formato estandarizado de las imágenes del contenedor de aplicaciones, la definición relacionada delentorno de ejecucióndel contenedor y unprotocolopara descubrir y recuperar imágenes de contenedores.[17][18][19][20]​ CoreOS proporciona rkt como una implementación de la denominada especificación delcontenedor de aplicaciones(appc) que describe las propiedades requeridas de laimagen del contenedor de aplicaciones(ACI); CoreOS inició appc y ACI como un conjunto de especificaciones independiente dirigido por un comité,[21][22]​ objetivo de que se conviertan en parte de laOpen Container Initiative(OCI) independiente del proveedor y del sistema operativo; inicialmente llamadaOpen Container Projecto OCP[23]​ ) estándar de contenedorización, que se anunció en junio de 2015.[24][25][26]

Container Linux usa scriptsebuildde Gentoo Linux para lacompilaciónautomatizada de los componentes de su sistema,[5][6]​ y usasystemdcomo su sistema deinicializaciónprimario con una estrecha integración entre systemd y varios mecanismos internos de Container Linux.[2][27]

Distribución de actualizaciones

[editar]

Container Linux logra seguridad y confiabilidad adicionales de lasactualizacionesde su sistema operativo al emplearFastPatchcomo un esquema de partición dual para la parte de solo lectura de su instalación, lo que significa que las actualizaciones se realizan como un todo y se instalan en unaparticiónde inicio secundaria pasiva que se convierte en activo tras un reinicio okexec.Este enfoque evita posibles problemas derivados de la actualización en sólo ciertas partes del sistema operativo, asegura reversiones del sistema operativo y permite que cada partición de arranque seanfirmadas digitalmentepara mayor seguridad.[2][4][28]​ La partición raíz y susistema de archivos raízse redimensionan automáticamente para llenar todo el espacio disponible en disco al reiniciar; mientras que la partición raíz proporciona espacio de almacenamiento de lectura y escritura, el sistema operativo en sí estámontadoen modo solo lectura en/usr.[29][30][31]

Para garantizar que solo una determinada parte delclústerse reinicie a la vez cuando se apliquen las actualizaciones del sistema operativo, preservando de esa manera los recursos necesarios para ejecutar aplicaciones implementadas, CoreOS proporcionalocksmithcomo administrador de reinicio para Container Linux.[32]​ Usandolocksmith,uno puede seleccionar entre diferentes estrategias de actualización que están determinadas por cómo se realizan los reinicios como último paso en la aplicación de actualizaciones; por ejemplo, se puede configurar cuántos miembros del clúster pueden reiniciarse simultáneamente. Internamente,locksmithopera como eldemoniolocksmithdque se ejecuta en miembros del clúster, mientras que la utilidad delínea de comandoslocksmithctladministra los parámetros de configuración.[33][34]​ Locksmith está escrito enGoy se distribuye según los términos de lalicencia Apache 2.0.[35]

El sistema de distribución de actualizaciones empleado por Container Linux se basa en el proyectoOmahade código abierto deGoogle,que proporciona un mecanismo para implementar actualizaciones y el protocolo de solicitud-respuesta subyacente basado enXML.[36][37][38]​ Además, CoreOS proporcionaCoreUpdatecomo un panel de control basado en la web para la administración de actualizaciones en todo el clúster. Las operaciones disponibles a través de CoreUpdate incluyen la asignación de miembros del clúster a diferentes grupos que comparten políticas de actualización personalizadas, la revisión de los desgloses de las versiones de Container Linux en todo el clúster, la detención y reinicio de las actualizaciones y la revisión de los registros de actualización registrados. CoreUpdate también proporciona unaAPIbasada enHTTPque permite su integración en sistemas de implementación o utilidades de terceros.[28][39][40]

Infraestructura de clúster

[editar]
Una ilustración de alto nivel de la arquitectura del clúster de CoreOS[41]

Container Linux proporcionaetcd,un demonio que se ejecuta en todas las computadoras de un clúster y proporciona un registro de configuración dinámica, lo que permite compartir de manera fácil y confiable varios datos de configuración entre los miembros del clúster.[36][29]​ Dado que los datos clave-valor almacenados enetcdsedistribuyeyreplicaautomáticamente con laelección maestraautomatizada y el establecimiento deconsensoutilizando el algoritmoRaft,todos los cambios en los datos almacenados se reflejan en todo el clúster, mientras que laredundancialograda evita que las fallas de los miembros individuales del clúster provoquen la pérdida de datos.[20][42]​ Además de lagestión de la configuración,etcdtambién proporciona descubrimiento de servicios al permitir que las aplicaciones implementadas se anuncien a sí mismas y los servicios que ofrecen. La comunicación conetcdse realiza a través de una API basada enRESTexpuesta, que utiliza internamenteJSONsobre HTTP; la API se puede utilizar directamente (a través decurlowget,por ejemplo), o indirectamente a través deetcdctl,que es una utilidad de línea de comandos especializada también proporcionada por CoreOS.[2][4][43][44][45]etcdtambién se usa en el software deKubernetes.

Container Linux también proporciona el administrador de clústerfleet,el que controla las instancias de systemd separadas de Container Linux a nivel de clúster. A partir de 2017,fleetya no se desarrolla activamente y está obsoleta en favor deKubernetes.[46]​ Mediante el usofleetd,Container Linux crea unsistema de iniciodistribuido que une instancias de systemd separadas y un despliegue deetcda nivel de clúster;[42]​ internamente,fleetdse comunica con las instanciassystemdsobreD-Bus,y con laetcdtravés de su API expuesta. Utilizandofleetd,permite la implementación de uno o varioscontenedoresen todo el clúster, con opciones más avanzadas que incluyenredundancia,conmutación por error,implementación en miembros específicos del clúster, dependencias entre contenedores e implementación agrupada de contenedores. Una utilidad de línea de comandos llamadafleetctlse utiliza para configurar y monitorear este sistema de inicio distribuido;[47]​ internamente, se comunica con elfleetdutilizando una API basada en JSON sobre HTTP, que también se puede utilizar directamente. Cuando se usa localmente en un miembro del clúster,fleetctlse comunica con otra instancia local defleetdsobre unsocket Unix;cuando se usa desde un host externo, latunelización SSHse usa conautenticaciónproporcionada a través declaves SSH públicas.[48][49][50][51][52]

Todos los demonios y utilidades de línea de comandos mencionados anteriormente (etcd,etcdctl,fleetdyfleetctl) están escritos en el lenguaje Go y distribuidos bajo los términos de la Licencia Apache 2.0.[53]

Despliegue

[editar]

Cuando se ejecuta en hardware dedicado, Container Linux se puede instalar permanentemente en el almacenamiento local, como unaunidad de disco duro(HDD) ouna unidad de estado sólido(SSD),[54]​ o se puede iniciar de forma remotaa través de la redutilizando elentorno de ejecución de prearranque(PXE), o iPXE como una de sus implementaciones.[55][56]​ CoreOS también admite implementaciones en varias plataformas de virtualización de hardware, incluidasAmazon EC2,DigitalOcean,Google Cloud,Microsoft Azure,OpenStack,QEMU/KVM,VagrantyVMware.[4][57][58][59]​ Container Linux también se puede instalar enCitrixXenServer, teniendo en cuenta que existe una "plantilla" para CoreOS.

Container Linux también se puede implementar a través de su distribución comercial llamadaTectonic,que además integraKubernetesde Google como una utilidad de administración de clústeres. A abril de 2015, se planeó ofrecer Tectonic comosoftware betapara clientes selectos.[21][60]​ Además, CoreOS proporcionaFlannelcomo un componente que implementa unared de superposiciónnecesaria principalmente para la integración con Kubernetes.[61][62]

A febrero de 2015, Container Linux soporta solo la arquitecturax86-64.[36]

Derivados

[editar]

Tras la adquisición de CoreOS, Inc.[63]​ en enero de 2018, Red Hat anunció que fusionaría CoreOS Container Linux con Project Atomic de Red Hat,[64]​ para crear un nuevo sistema operativo, Red Hat CoreOS, mientras se alinea el upstream. La comunidad de código abierto delProyecto Fedoraen torno a Fedora CoreOS, que combina tecnologías de ambos predecesores.[65]

El 6 de marzo de 2018, Kinvolk GmbH anunció[66]​ Flatcar Container Linux, un derivado de CoreOS Container Linux. Esto realiza un seguimiento de las versionesupstreamde CoreOS alpha/beta/estable, con un canal de lanzamiento experimental de Edge agregado en mayo de 2019.[67]

En mayo de 2020 se anunció el fin del ciclo de vida de Container Linux.[11]Red Hatlanzó Fedora CoreOS[12]​ y RHEL CoreOS como su reemplazo.

Referencias

[editar]
  1. «CoreOS Linux is now Container Linux».coreos.com.Consultado el 2016-12-20 de ifuporg.
  2. abcdefLibby Clark (2013-09-09 de mdy).«Brandon Philips: How the CoreOS Linux Distro Uses Cgroups».Linux.com.Archivado desdeel originalel 22 de febrero de 2014.Consultado el 2014-02-13 de mdy.
  3. ab«CoreOS – a new approach to Linux-based server systems».itnews2day.com.2013-08-22 de mdy. Archivado desdeel originalel 29 de noviembre de 2014.Consultado el 2014-03-26 de mdy.
  4. abcde«CoreOS documentation: Using CoreOS».coreos.com.Archivado desdeel originalel 23 de febrero de 2014.Consultado el 2014-02-13 de mdy.
  5. ab«Building development images: Updating portage-stable ebuilds from Gentoo».coreos.com.Archivado desdeel originalel 14 de julio de 2017.Consultado el 2016-05-24 de mdy.
  6. ab«Distributions based on Gentoo».gentoo.org.2016-03-25 de mdy.Consultado el 2016-05-24 de mdy.
  7. Brian Harrington (2014-07-08 de mdy).«CoreOS: Anatomy of a CoreOS update».youtube.com.Rackspace.Consultado el 2014-07-25 de mdy.
  8. Alex Polvi (2014-07-25 de mdy).«CoreOS Stable Release».coreos.com.Archivado desdeel originalel 29 de noviembre de 2014.Consultado el 2014-08-28 de mdy.
  9. «CoreOS Release Notes».coreos.com.Archivado desdeel originalel 10 de abril de 2018.Consultado el 2014-08-28 de mdy.
  10. Brandon Philips (2015-01-28 de mdy).«etcd 2.0 Release – First Major Stable Release».coreos.com.Archivado desdeel originalel 13 de agosto de 2020.Consultado el 2015-06-14 de mdy.
  11. ab«End-of-life announcement for CoreOS Container Linux».coreos.com(en inglés).Consultado el 16 de agosto de 2020.
  12. ab«Fedora CoreOS Documentation:: Fedora Docs Site».docs.fedoraproject.org.Consultado el 16 de agosto de 2020.
  13. Jonathan Corbet (2007-10-29 de mdy).«Notes from a container».LWN.net.Consultado el 2016-07-03 de mdy.
  14. Jake Edge (2014-11-19 de mdy).«Control group namespaces».LWN.net.Consultado el 2016-07-03 de mdy.
  15. ab«CoreOS documentation: Using Docker with CoreOS».coreos.com.Archivado desdeel originalel 4 de agosto de 2016.Consultado el 2015-06-14 de mdy.
  16. «Docker 0.9: Introducing execution drivers and libcontainer».docker.com.2014-03-10 de mdy.Consultado el 2015-01-20 de mdy.
  17. Libby Clark (2015-01-30 de mdy).«CoreOS Co-Founder Alex Polvi Talks Containers, Rocket vs. Docker, and More».Linux.com.Consultado el 2015-06-14 de mdy.
  18. Charles Babcock (2015-02-20 de mdy).«Rocket Containers: How CoreOS Plans To Challenge Docker».informationweek.com.Consultado el 2015-06-14 de mdy.
  19. Alex Polvi (2014-12-01 de mdy).«CoreOS is building a container runtime, rkt».coreos.com.Consultado el 2015-06-14 de mdy.
  20. abJosh Berkus (2015-02-04 de mdy).«New etcd, appc, and Rocket releases from CoreOS».LWN.net.Consultado el 2015-06-22 de mdy.
  21. abJosh Berkus (2015-05-13 de mdy).«CoreOS Fest and the world of containers, part 1».LWN.net.Consultado el 2015-06-22 de mdy.
  22. Nathan Willis (2014-12-03 de mdy).«The Rocket containerization system».LWN.net.Consultado el 2015-06-22 de mdy.
  23. McAllister, Neil.«Docker and chums unveil standards org for software containers».22 de junio de 2015.Consultado el 19 de enero de 2017.«Announced at the DockerCon conference in San Francisco on Monday, the Open Container Project (OCP) will maintain and develop a common container runtime and image format based in part on code and specs donated by Docker.»|periódico=y|publicación=redundantes (ayuda)
  24. Frederic Lardinois (2015-06-22 de mdy).«Docker, CoreOS, Google, Microsoft, Amazon and others come together to develop common container standard».Consultado el 2015-06-24 de mdy.
  25. «Industry Leaders Unite to Create Project for Open Container Standards».opencontainers.org.2015-06-22 de mdy. Archivado desdeel originalel 13 de agosto de 2015.Consultado el 2015-06-24 de mdy.
  26. Neil McAllister (2015-07-22 de mdy).«Open Container Project renames, says standard is just weeks away: Linux Foundation, Docker and friends opt for Open Container Initiative».The Register.Consultado el 2016-01-29 de mdy.
  27. «CoreOS documentation: Using systemd with CoreOS».coreos.com.Archivado desdeel originalel 14 de febrero de 2014.Consultado el 2014-02-13 de mdy.
  28. ab«CoreOS documentation: Updates & patches».coreos.com.Archivado desdeel originalel 14 de febrero de 2014.Consultado el 2015-02-27 de mdy.
  29. abPhil Whelan (2013-08-28 de mdy).«Alex Polvi Explains CoreOS».activestate.com.Archivado desdeel originalel 24 de febrero de 2015.Consultado el 2015-05-07 de mdy.
  30. «CoreOS documentation: Adding disk space to your CoreOS machine».coreos.com.Consultado el 2015-02-27 de mdy.
  31. Alex Polvi (2014-03-27 de mdy).«Major Update: btrfs, Docker 0.9, add users, writable /etc, and more!».coreos.com.Consultado el 2015-02-27 de mdy.
  32. «Simple Introduction to CoreOS with CEO Alex Polvi and CTO Brandon Philips».centurylinklabs.com.2014-06-06 de mdy. Archivado desdeel originalel 22 de junio de 2015.Consultado el 2015-06-22 de mdy.
  33. «CoreOS documentation: Update strategies».coreos.com.Consultado el 2015-04-17 de mdy.
  34. «coreos/locksmith: locksmith/README.md at master».github.com.2015-02-01 de mdy.Consultado el 2015-04-17 de mdy.
  35. «coreos/locksmith: locksmith/LICENSE at master».github.com.2014-01-19 de mdy.Consultado el 2015-04-17 de mdy.
  36. abcTimothy Prickett Morgan (2015-02-15 de mdy).«CoreOS Hyperscales Linux By Making It Invisible».nextplatform.com.Consultado el 2015-06-14 de mdy.
  37. «Omaha – software installer and auto-updater for Windows».code.google.com.Consultado el 2014-10-11 de mdy.
  38. «Omaha Overview».omaha.googlecode.com.2009-09-23 de mdy. Archivado desdeel originalel 6 de mayo de 2009.Consultado el 2014-10-11 de mdy.
  39. «Package omaha».godoc.org.2014-06-24 de mdy.Consultado el 2014-07-04 de mdy.
  40. «CoreOS documentation: CoreUpdate».coreos.com.Consultado el 2014-07-04 de mdy.
  41. Mark Moudy (2014-05-16 de mdy).«CoreOS + Docker Development Environment Demo».github.com.Consultado el 2015-04-16 de mdy.
  42. abJonathan Corbet (2014-10-22 de mdy).«Etcd and fleet».LWN.net.Consultado el 2015-06-22 de mdy.
  43. «CoreOS documentation: Using etcd with CoreOS».coreos.com.Consultado el 2014-02-13 de mdy.
  44. «CoreOS documentation: Getting started with etcd».coreos.com.Consultado el 2014-02-13 de mdy.
  45. Brandon Philips (2014-01-15 de mdy).«etcd @ GoSF».speakerdeck.com.Consultado el 2014-02-13 de mdy.
  46. Wood, Josh.«Container orchestration: Moving from fleet to Kubernetes».coreos..com.CoreOS.
  47. Justin Ellingwood (2014-09-12 de mdy).«How To Use Fleet and Fleetctl to Manage your CoreOS Cluster».digitalocean.com.Consultado el 2015-06-22 de mdy.
  48. «CoreOS documentation: Launching containers with fleet».coreos.com.Consultado el 2014-04-03 de mdy.
  49. «CoreOS documentation: Using the client».coreos.com.Consultado el 2014-04-03 de mdy.
  50. «coreos/fleet: fleet/README.md at master».github.com.2014-02-18 de mdy.Consultado el 2014-04-03 de mdy.
  51. «coreos/fleet: fleet/Documentation/deployment-and-configuration.md at master (Deploying fleet)».github.com.2015-04-14 de mdy.Consultado el 2015-04-17 de mdy.
  52. «coreos/fleet: fleet/Documentation/api-v1.md (fleet API v1)».github.com.2014-10-29 de mdy.Consultado el 2015-04-17 de mdy.
  53. «coreos/fleet: fleet/LICENSE at master».github.com.2014-02-06 de mdy.Consultado el 2014-04-03 de mdy.
  54. «CoreOS documentation: Installing CoreOS to disk».coreos.com.Consultado el 2014-02-13 de mdy.
  55. «CoreOS documentation: Booting CoreOS via PXE».coreos.com.Consultado el 2014-02-13 de mdy.
  56. «CoreOS documentation: Booting CoreOS via iPXE».coreos.com.Consultado el 2014-02-13 de mdy.
  57. Alex Crawford (2014-09-05 de mdy).«CoreOS Image Now Available On DigitalOcean».coreos.com.Consultado el 2014-09-05 de mdy.
  58. Jack Clark (2014-05-23 de mdy).«Google brings futuristic Linux software CoreOS onto its cloud».The Register.Consultado el 2014-05-26 de mdy.
  59. Alex Crawford (2014-10-20 de mdy).«CoreOS Now Available On Microsoft Azure».coreos.com.Consultado el 2014-10-22 de mdy.
  60. Steven J. Vaughan-Nichols (2015-04-06 de mdy).«CoreOS is bringing Google's Kubernetes to the enterprise».Consultado el 2015-04-29 de mdy.
  61. Eugene Yakubovich (2014-08-28 de mdy).«Introducing flannel: An etcd-backed overlay network for containers».coreos.com.Consultado el 2015-06-22 de mdy.
  62. «Tutorial on using CoreOS Flannel for Docker».slideshare.net.November 2014.Consultado el 2015-06-22 de mdy.
  63. Rosoff, Matt (30 de enero de 2018).«Red Hat pays $250 million for CoreOS, a start-up that sells Google-developed technology».CNBC(en inglés).Consultado el 6 de junio de 2019.
  64. «Fedora CoreOS, Red Hat CoreOS, and the future of Container Linux | CoreOS».coreos.com.Consultado el 6 de junio de 2019.
  65. «Get Fedora».getfedora.org(en inglés).Consultado el 16 de agosto de 2020.
  66. «Announcing the Flatcar Linux project | Kinvolk».kinvolk.io.Consultado el 6 de junio de 2019.
  67. «Introducing the Flatcar Linux Edge Channel | Kinvolk».kinvolk.io.Consultado el 6 de junio de 2019.