Container Linux
Container Linux by CoreOS sistema operativo | |
---|---|
![]() | |
Famiglia | Unix-like |
Release iniziale | 3 Ottobre 2013 |
Release corrente | 1353.2.0 (28 Marzo 2017) |
Tipo di kernel | Kernel monolitico |
Piattaforme supportate | x86-64 |
Stadio di sviluppo | in sviluppo |
Sito web | www.coreos.com |
Container Linux by CoreOS (precedentemente CoreOS Linux) è un sistema operativo leggero[non chiaro] open source basato sul kernel Linux e progettato per fornire infrastrutture alle implementazioni clusterizzate, concentrandosi sull'automazione, la facilità di implementazione delle applicazioni, la sicurezza, l'affidabilità e la scalabilità. Come sistema operativo, Container Linux fornisce solo le funzionalità minime necessarie per la distribuzione di applicazioni all'interno di Container software, insieme a meccanismi integrati per la scoperta di servizi e la condivisione delle configurazioni.[1][2][3][4][5]
Container Linux condivide fondazioni con Gentoo Linux, Chrome OS e Chromium OS, attraverso un kit di sviluppo software comune (SDK). Container Linux aggiunge nuove funzionalità e personalizzazione a questa base condivisa per supportare l'hardware del server e l'uso base ai casi. A partire da gennaio 2015, CoreOS è attivamente sviluppato, principalmente da Alex Polvi, Brandon Philips e Michael Marineau, con le sue caratteristiche principali disponibili come rilascio stabile.
Container Linux non fornisce alcun gestore di pacchetti come un modo per distribuire applicazioni di payload, richiedendo invece tutte le applicazioni per eseguire all'interno dei loro contenitori. Servita come un singolo host di controllo, un'istanza Container Linux utilizza le funzionalità di virtualizzazione di livello operativo del sistema operativo del kernel Linux per creare e configurare più contenitori che eseguono come sistemi Linux isolati. In questo modo, la partizione delle risorse tra i container viene eseguita tramite istanze multiple degli spazi utente, anziché utilizzare un hypervisor e fornire macchine virtuali a pieno titolo. Questo approccio si basa sulle funzionalità dei gruppi e delle funzioni dei nomi del kernel di Linux che insieme forniscono capacità per limitare, gestire e isolare l'utilizzo delle risorse (CPU, memoria, disco I / O, ecc.) Per le collezioni di processi degli spazi utente.
Inizialmente, Container Linux usava esclusivamente Docker come componente che fornisce un ulteriore livello di astrazione e di interfaccia alle funzionalità di virtualizzazione di livello operativo del kernel Linux, oltre a fornire un formato standard per i contenitori che consente alle applicazioni di eseguire ambienti diversi. Nel dicembre 2014, CoreOS ha rilasciato e ha iniziato a sostenere il rkt (inizialmente rilasciato come Rocket) come alternativa a Docker, fornendo attraverso di esso un altro formato standardizzato delle immagini del contenitore di applicazioni, la relativa definizione dell'ambiente di runtime contenitore e un protocollo per scoprire e recupero immagini contenitore CoreOS fornisce rkt come implementazione della cosiddetta specifica contenitore app (appc) che descrive le proprietà richieste dell'immagine del contenitore di applicazioni (ACI); CoreOS ha avviato appc e ACI come un insieme indipendente di comandi guidati da specifiche volte a farli diventare parte dell'Open Container Initiative indipendente dal fornitore e dal sistema operativo (OCI, inizialmente denominato Open Container Project o OCP), che è stato annunciato nel giugno 2015.
Container Linux utilizza gli script di ebuild da Gentoo Linux per la compilazione automatica dei componenti di sistema, e utilizza systemd come sistema primario init con una stretta integrazione tra i meccanismi interni di systemd e di vari sistemi di Container Linux.
Distribuzione aggiornamenti
Container Linux raggiunge la sicurezza e l'affidabilità aggiuntive dei propri aggiornamenti del sistema operativo impiegando FastPatch come schema a due partizioni per la parte di sola lettura della sua installazione, il che significa che gli aggiornamenti vengono eseguiti nel suo complesso e installati su una partizione di avvio secondaria passiva che diventa attivo su un riavvio o kexec. Questo approccio evita le possibili problematiche derivanti dall'aggiornamento solo di determinate parti del sistema operativo, garantisce un semplice rollback a una versione conosciuta per essere stabile del sistema operativo e consente a ciascuna partizione di avvio di essere firmata per una maggiore sicurezza. La partizione di root e il suo file radice vengono ridimensionati automaticamente per riempire tutto lo spazio disponibile su riavvii; mentre la partizione di root fornisce spazio di archiviazione di lettura e scrittura, il sistema operativo è montato in sola lettura sotto /usr. Per assicurarsi che solo una parte del cluster si riavvii contemporaneamente all'aggiornamento del sistema operativo, mantenendo in tal modo le risorse necessarie per eseguire applicazioni distribuite, CoreOS fornisce locksmith come gestore di riavvio per Container Linux. Utilizzando il locksmith, è possibile selezionare tra diverse strategie di aggiornamento determinate da come vengono eseguiti i riavvi come ultimo passo per l'applicazione degli aggiornamenti; ad esempio, può essere configurato il numero di membri di cluster che possono essere riavviati contemporaneamente. Internamente, il locksmith opera come il demone locksmithd che viene eseguito sui membri del cluster, mentre l'utility della riga di comando di locksmithctl gestisce i parametri di configurazione. Il locksmith è scritto nella lingua Go e distribuito sotto i termini della licenza Apache 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 lo sviluppo degli aggiornamenti e il protocollo di richiesta-risposta sottostante basato su XML. Inoltre, CoreOS fornisce CoreUpdate come dashboard web per la gestione di aggiornamenti a livello di cluster. Le operazioni disponibili tramite CoreUpdate includono l'assegnazione di membri di cluster a gruppi diversi che condividono le politiche di aggiornamento personalizzate, la revisione delle configurazioni di Container Linux a livello di cluster, l'arresto e il riavvio degli aggiornamenti e la revisione dei registri aggiornati registrati. CoreUpdate fornisce anche un'API basata su HTTP che consente la sua integrazione in utilità di terze parti o sistemi di distribuzione.
Infrastrutture cluster
Un esempio di alto livello dell'architettura cluster CoreOS Container Linux fornisce il sofddd, un daemon che esegue tutti i computer in un cluster e fornisce un registro di configurazione dinamica che consente di condividere facilmente e in modo affidabile i vari dati di configurazione tra i membri del cluster. Poiché i dati di valore chiave immagazzinati in etcd vengono automaticamente distribuiti e replicati con elezioni master e consenso automatico utilizzando l'algoritmo Raft, tutte le modifiche dei dati memorizzati vengono riflesse su tutto il cluster, mentre la ridondanza raggiunta impedisce l'errore di singoli membri del cluster di causare perdita di dati. Oltre alla gestione delle configurazioni, anche la scoperta dei servizi consente di annunciare se stessi e dei servizi che offrono. La comunicazione con etcd viene eseguita tramite un'API REST-based, che utilizza internamente JSON in cima a HTTP; l'API può essere utilizzata direttamente (per esempio tramite curl o wget) o indirettamente tramite etcdctl, un'utilità di riga di comando specializzata anche fornita da CoreOS.
Container Linux fornisce anche il gestore cluster di flotte che controlla le istanze systemd separate di Container Linux al livello del cluster. Dal 2017 la "flotta" non è più attivamente sviluppata e viene deprecata a favore di Kubernetes. Utilizzando fleetd, Container Linux crea un sistema distribuito init che unisce installazioni separate di sistema e una distribuzione cluster eccedente; internamente il daemon fleetd comunica con le istanze systemd locali su D-Bus e con l'implementazione di etcd attraverso il suo esposto API. L'utilizzo di fleetd consente la distribuzione di contenitori singoli o multipli in ambito cluster, con opzioni più avanzate, tra cui ridondanza, failover, distribuzione a membri del cluster specifici, dipendenze tra i contenitori e distribuzione distribuita di contenitori. Una utility di riga di comando chiamata fleetctl è usata per configurare e monitorare questo sistema distribuito init; internamente, comunica con il demone fleetd utilizzando un'API basata su JSON sopra HTTP, che può anche essere utilizzata direttamente. Quando viene utilizzato localmente in un membro del cluster, fleetctl comunica con l'istanza locale fleetd su una socket di dominio Unix; quando viene utilizzato da un host esterno, viene utilizzato tunneling SSH con l'autenticazione fornita tramite chiavi SSH pubbliche.
Tutti i summenzionati demoni e utility di riga di comando (etcd, etcdctl, fleetd e fleetctl) sono scritti nella lingua Go e distribuiti sotto i termini della licenza Apache 2.0.
Distribuzione
Quando si esegue su hardware dedicato, Container Linux può essere installato in modo permanente per l'archiviazione locale, ad esempio un disco rigido (HDD) o un'unità SSD o avviato in remoto su una rete utilizzando l'ambiente di esecuzione preboot (PXE) in generale o iPXE come una delle sue implementazioni CoreOS supporta inoltre le piattaforme di virtualizzazione hardware, tra cui Amazon EC2, DigitalOcean, Google Compute Engine, Microsoft Azure, OpenStack, QEMU / KVM, Vagrant e VMware.
Il contenitore Linux può anche essere distribuito attraverso la sua distribuzione commerciale denominata Tectonic, che integra inoltre Kubernetes di Google come un'utilità di gestione dei cluster. A partire da aprile 2015, Tectonic è previsto per essere offerto come software beta per selezionare i clienti. Inoltre, CoreOS fornisce Flannel come componente che implementa una rete di sovrapposizione richiesta principalmente per l'integrazione con Kubernetes.
A partire da febbraio 2015, Container Linux supporta solo l'architettura x86-64.
Note
- ^ CoreOS Linux is now Container Linux, su coreos.com. URL consultato il 20 dicembre 2016.
- ^ Libby Clark, Brandon Philips: How the CoreOS Linux Distro Uses Cgroups, su linux.com, Linux.com, settembre 9, 2013. URL consultato il febbraio 13, 2014.
- ^ Cade Metz, Linux Hackers Rebuild Internet From Silicon Valley Garage, su wired.com, Wired, agosto 21, 2013. URL consultato il febbraio 13, 2014.
- ^ CoreOS – a new approach to Linux-based server systems, su itnews2day.com, agosto 22, 2013. URL consultato il marzo 26, 2014.
- ^ CoreOS documentation: Using CoreOS, su coreos.com. URL consultato il febbraio 13, 2014.
Altri progetti
Wikimedia Commons contiene immagini o altri file su CoreOS
Collegamenti esterni
(EN) Container Linux, su DistroWatch.