Contenitore Linux - Container Linux
| Sviluppatore | Team CoreOS, Red Hat |
|---|---|
| Famiglia del sistema operativo | Linux (basato su Gentoo Linux ) |
| Stato di lavoro | Fuori produzione |
| Modello di origine | Open source |
| Versione iniziale | 3 ottobre 2013 |
| Ultima uscita | 2512.3.0 / 22 maggio 2020 |
| Ultima anteprima | 2513.2.0 (Beta) / 22 maggio 2020 2514.1.0(Alpha) / 22 maggio 2020 |
| Obiettivo di marketing | Server e cluster |
| Piattaforme | x86-64 |
| Tipo di kernel | Monolitico ( kernel Linux ) |
| Licenza | Licenza Apache 2.0 |
| seguito da | Fedora CoreOS RHEL CoreOS |
| Sito ufficiale | coreos |
Container Linux (precedentemente CoreOS Linux ) è un sistema operativo leggero open source fuori produzione basato sul kernel Linux e progettato per fornire infrastruttura a distribuzioni in cluster , concentrandosi sull'automazione, facilità di distribuzione delle applicazioni, sicurezza, affidabilità e scalabilità . Come sistema operativo, Container Linux ha fornito solo la funzionalità minima richiesta per la distribuzione di applicazioni all'interno di contenitori software , insieme a meccanismi integrati per il rilevamento dei servizi e la condivisione della configurazione.
Container Linux condivide le basi con Gentoo Linux , Chrome OS e Chromium OS attraverso un comune kit di sviluppo software (SDK). Container Linux aggiunge nuove funzionalità e personalizzazione a questa base condivisa per supportare l'hardware del server e i casi d'uso. CoreOS è stato sviluppato principalmente da Alex Polvi, Brandon Philips e Michael Marineau, con le sue principali funzionalità disponibili come versione stabile .
Il team CoreOS ha annunciato la fine del ciclo di vita di Container Linux il 26 maggio 2020, offrendo Fedora CoreOS e RHEL CoreOS in sostituzione, entrambi basati su Red Hat .
Panoramica
Container Linux non fornisce un gestore di pacchetti come modo per distribuire applicazioni di payload, richiedendo invece che tutte le applicazioni vengano eseguite all'interno dei loro contenitori. Fungendo da host di controllo singolo, un'istanza Container Linux usa le funzionalità di virtualizzazione a livello di sistema operativo sottostanti del kernel Linux per creare e configurare più contenitori che funzionano come sistemi Linux isolati . In questo modo, il partizionamento delle risorse tra i contenitori viene eseguito tramite più istanze di spazio utente isolate , invece di utilizzare un hypervisor e fornire macchine virtuali complete . Questo approccio si basa sulle funzionalità cgroup e namespace del kernel Linux , che insieme forniscono capacità di limitare, contabilizzare e isolare l'utilizzo delle risorse ( CPU , memoria, I/O del disco , ecc.) per le raccolte di processi dello spazio utente .
Inizialmente, Container Linux utilizzava esclusivamente Docker come componente che fornisce un ulteriore livello di astrazione e interfaccia alle funzionalità di virtualizzazione a livello di sistema operativo del kernel Linux, oltre a fornire un formato standardizzato per i contenitori che consente alle applicazioni di funzionare in ambienti diversi. A dicembre 2014 CoreOS ha rilasciato e iniziato a supportare rkt (rilasciato inizialmente come Rocket ) come alternativa a Docker, fornendo attraverso di esso un altro formato standardizzato delle immagini del contenitore dell'applicazione, la relativa definizione dell'ambiente di runtime del contenitore e un protocollo per la scoperta e il recupero delle immagini del contenitore. CoreOS fornisce rkt come implementazione della cosiddetta specifica del contenitore di app (appc) che descrive le proprietà richieste dell'immagine del contenitore di applicazioni (ACI); CoreOS ha avviato appc e ACI come un insieme di specifiche indipendenti guidato da un comitato, con l'obiettivo di farli diventare parte dell'Open Container Initiative (OCI) indipendente dal fornitore e dal sistema operativo ; inizialmente chiamato Open Container Project o OCP, standard di containerizzazione, che è stato annunciato nel giugno 2015.
Container Linux utilizza gli script ebuild di Gentoo Linux per la compilazione automatizzata dei suoi componenti di sistema e usa systemd come sistema di inizializzazione principale con una stretta integrazione tra systemd e vari meccanismi interni di Container Linux.
Distribuzione degli aggiornamenti
Container Linux ottiene ulteriore sicurezza e affidabilità degli aggiornamenti del suo sistema operativo utilizzando FastPatch come schema a doppia partizione per la parte di sola lettura della sua installazione, il che significa che gli aggiornamenti vengono eseguiti nel loro insieme e installati su una partizione di avvio secondaria passiva che diventa attivo al riavvio o kexec . Questo approccio evita possibili problemi derivanti dall'aggiornamento solo di alcune parti del sistema operativo, garantisce un facile rollback a una versione nota per essere stabile del sistema operativo e consente di firmare ogni partizione di avvio per una maggiore sicurezza. La partizione di root e il suo file system di root vengono ridimensionati automaticamente per riempire tutto lo spazio disponibile su disco al riavvio; mentre la partizione root fornisce spazio di archiviazione in lettura-scrittura, il sistema operativo stesso è montato in sola lettura in /usr .
Per garantire che solo una determinata parte del cluster si riavvii contemporaneamente quando vengono applicati gli aggiornamenti del sistema operativo, preservando in questo modo le risorse necessarie per l'esecuzione delle applicazioni distribuite, CoreOS fornisce il fabbro come gestore di riavvio per Container Linux. Utilizzando il fabbro, è possibile selezionare tra diverse strategie di aggiornamento determinate da come vengono eseguiti i riavvii come ultimo passaggio nell'applicazione degli aggiornamenti; ad esempio, è possibile configurare quanti membri del cluster possono riavviarsi contemporaneamente. Internamente, locksmith opera come demone locksmithd che viene eseguito sui membri del cluster, mentre l' utilità della riga di comando locksmithctl gestisce i parametri di configurazione. Locksmith è scritto nel linguaggio Go e distribuito secondo i termini della Apache License 2.0 .
Il sistema di distribuzione degli aggiornamenti impiegato da Container Linux si basa sul progetto Omaha open source di Google , che fornisce un meccanismo per l'implementazione degli aggiornamenti e il protocollo di richiesta-risposta sottostante basato su XML . Inoltre, CoreOS fornisce CoreUpdate come dashboard basato sul Web per la gestione degli aggiornamenti a livello di cluster. Le operazioni disponibili tramite CoreUpdate includono l'assegnazione di membri del cluster a diversi gruppi che condividono criteri di aggiornamento personalizzati, la revisione dei guasti a livello di cluster delle versioni di Container Linux, l'arresto e il riavvio degli aggiornamenti e la revisione dei registri di aggiornamento registrati. CoreUpdate fornisce anche un'API basata su HTTP che ne consente l'integrazione in utilità o sistemi di distribuzione di terze parti .
Infrastruttura cluster
Container Linux fornisce etcd, un demone che viene eseguito su tutti i computer in un cluster e fornisce un registro di configurazione dinamico, consentendo la condivisione facile e affidabile di vari dati di configurazione tra i membri del cluster. Poiché i dati chiave-valore archiviati all'interno di etcd vengono automaticamente distribuiti e replicati con l' elezione automatizzata del master e la creazione del consenso utilizzando l' algoritmo Raft , tutte le modifiche ai dati archiviati si riflettono sull'intero cluster, mentre la ridondanza ottenuta impedisce che i guasti dei singoli membri del cluster causino perdita di dati. Oltre alla gestione della configurazione, etcd fornisce anche il rilevamento dei servizi consentendo alle applicazioni distribuite di annunciare se stesse e i servizi che offrono. La comunicazione con etcd viene eseguita tramite un'API basata su REST esposta , che utilizza internamente JSON su HTTP; l'API può essere utilizzata direttamente (tramite curl o wget , ad esempio) o indirettamente tramite etcdctl , che è un'utilità della riga di comando specializzata fornita anche da CoreOS. Etcd viene utilizzato anche nel software Kubernetes .
Container Linux fornisce anche il gestore cluster della flotta che controlla le istanze systemd separate di Container Linux a livello di cluster. A partire dal 2017 la "flotta" non è più attivamente sviluppata ed è deprecata a favore di Kubernetes . Usando fleetd , Container Linux crea un sistema init distribuito che collega istanze systemd separate e una distribuzione etcd a livello di cluster ; internamente, il daemon flottato comunica con le istanze systemd locali su D-Bus e con la distribuzione etcd tramite la sua API esposta. L'utilizzo di fleetd consente l'implementazione di contenitori singoli o multipli a livello di cluster, con opzioni più avanzate tra cui ridondanza , failover , distribuzione a membri del cluster specifici, dipendenze tra contenitori e distribuzione raggruppata di contenitori. Un'utilità della riga di comando chiamata fleetctl viene utilizzata per configurare e monitorare questo sistema di inizializzazione distribuito; internamente, comunica con il daemon flottato utilizzando un'API basata su JSON su HTTP, che può anche essere utilizzata direttamente. Quando viene utilizzato localmente su un membro del cluster, fleetctl comunica con l' istanza flottata locale su un socket di dominio Unix ; se utilizzato da un host esterno, il tunneling SSH viene utilizzato con l'autenticazione fornita tramite chiavi SSH pubbliche .
Tutti i suddetti demoni e utilità della riga di comando ( etcd , etcdctl , fleetd e fleetctl ) sono scritti nel linguaggio Go e distribuiti secondo i termini della licenza Apache 2.0.
Distribuzione
Quando viene eseguito su hardware dedicato, Container Linux può essere installato permanentemente nell'archiviazione locale, come un'unità disco rigido (HDD) o un'unità a stato solido (SSD), o avviato in remoto su una rete utilizzando Preboot Execution Environment (PXE) in generale , o iPXE come una delle sue implementazioni. CoreOS supporta anche implementazioni su varie piattaforme di virtualizzazione hardware , tra cui Amazon EC2 , DigitalOcean , Google Compute Engine , Microsoft Azure , OpenStack , QEMU / KVM , Vagrant e VMware . Container Linux può anche essere installato su Citrix XenServer, notando che esiste un "modello" per CoreOS.
Container Linux può anche essere distribuito tramite la sua distribuzione commerciale chiamata Tectonic , che integra inoltre Kubernetes di Google come utility di gestione dei cluster. A partire da aprile 2015, Tectonic sarà offerto come software beta a clienti selezionati. Inoltre, CoreOS fornisce Flannel come componente che implementa una rete overlay richiesta principalmente per l'integrazione con Kubernetes.
A partire da febbraio 2015, Container Linux supporta solo l' architettura x86-64 .
Derivati
In seguito all'acquisizione di CoreOS, Inc. nel gennaio 2018, Red Hat ha annunciato che avrebbe unito CoreOS Container Linux con Project Atomic di Red Hat, per creare un nuovo sistema operativo, Red Hat CoreOS, allineando al contempo la comunità open source a monte del Fedora Project intorno Fedora CoreOS, che combina le tecnologie di entrambi i predecessori.
Il 6 marzo 2018, Kinvolk GmbH ha annunciato Flatcar Container Linux , un derivato di CoreOS Container Linux. Questo tiene traccia delle versioni del canale CoreOS alpha/beta/stable upstream, con un canale di rilascio Edge sperimentale aggiunto a maggio 2019.
Ricezione
LWN.net ha recensito CoreOS nel 2014:
Per coloro che stanno mettendo insieme grandi sistemi distribuiti, le applicazioni web sono un ottimo esempio, CoreOS sembrerebbe avere molte funzionalità interessanti. Dovrebbe consentire alle applicazioni di quel tipo di crescere e ridursi secondo necessità con la domanda, oltre a fornire una piattaforma stabile in cui gli aggiornamenti non sono un problema costante. Per le "distribuzioni di server di massa", CoreOS, o qualcosa con molte delle stesse caratteristiche, sembra il futuro.
Guarda anche
- Virtualizzazione delle applicazioni : tecnologia software che incapsula il software applicativo dal sistema operativo su cui viene eseguito
- Confronto tra software di virtualizzazione delle applicazioni : varie macchine virtuali portabili e con linguaggio di scripting
- Confronto del software di virtualizzazione della piattaforma : vari emulatori e hypervisor, che emulano l'intero computer fisico
- LXC (Linux Containers) – un ambiente per l'esecuzione di più sistemi Linux isolati (contenitori) su un singolo host di controllo Linux
- Implementazioni di virtualizzazione a livello di sistema operativo, basate sul supporto del kernel del sistema operativo per più istanze di spazio utente isolate
- Software as a service (SaaS): un modello di licenza e distribuzione del software che ospita il software a livello centrale e lo concede in licenza su abbonamento
- Virtualizzazione : un concetto generale di fornitura di versioni virtuali di piattaforme hardware, sistemi operativi, dispositivi di archiviazione, ecc.
Riferimenti
link esterno
- Repository ufficiali di codice sorgente CoreOS e GitHub : CoreOS , etcd , fleet , rkt e CoreOS-overlay
- CoreOS a DistroWatch
- Primo sguardo a CoreOS , 3 settembre 2013, di Sébastien Han
- CoreOS: Linux per il cloud e il datacenter , ZDNet , 2 luglio 2014, di Steven J. Vaughan-Nichols
- Cos'è CoreOS? Una minaccia esistenziale per i fornitori di Linux , InfoWorld , 9 ottobre 2014, di Matt Asay
- Capire l'architettura distribuita CoreOS , 4 marzo 2015, una conferenza con Alex Polvi di Aaron Delp e Brian Gracely
- Architettura della flotta CoreOS , 26 agosto 2014, di Brian Waldon et al.
- Esecuzione di CoreOS su Google Compute Engine , 23 maggio 2014
- CoreOS passa da Btrfs a Ext4 + OverlayFS , Phoronix , 18 gennaio 2015, di Michael Larabel
- Contenitori e dati persistenti , LWN.net , 28 maggio 2015, di Josh Berkus