CoreOS: il sistema operativo Linux minimale per l'epoca dei container

CoreOS (dicembre 2013) di Alex Polvi e Brandon Philips: distribuzione Linux minimale, immutabile, con aggiornamenti atomici e orientata all'esecuzione di container. L'embrione di molte idee dell'era cloud-native.

Open SourceWebR&D CoreOSContainerLinuxImmutableDockerCloudOpen Source

Un OS pensato per i container

Il marzo 2013 ha visto l’uscita pubblica di Docker, che porta i container Linux (basati su cgroups, namespaces) a uno status di tecnologia mainstream. Le distribuzioni Linux tradizionali — Ubuntu, Debian, CentOS, RHEL — sono state progettate negli anni ‘90-2000 per server pet: macchine long-lived, configurate manualmente, aggiornate pacchetto per pacchetto. Le caratteristiche tipiche (decine di migliaia di pacchetti disponibili, gestione stateful, kernel custom) sono sovradimensionate per un host che deve solo eseguire container.

CoreOS nasce nell’ottobre 2013 come startup di Alex Polvi e Brandon Philips con una tesi netta: serve un OS progettato nativamente per i container. La prima release pubblica stabile è di dicembre 2013.

Caratteristiche di design

CoreOS Linux introduce scelte radicali per un sistema operativo server:

  • Immagine minimale — circa 200 MB di base, senza package manager runtime. Solo kernel, systemd, OpenSSH, Docker/rkt
  • Filesystem read-only per root/usr è read-only; la configurazione sta in /etc, i dati in /var, le applicazioni dentro container
  • Aggiornamenti atomici A/B — due partizioni /usr, CoreOS scarica la nuova immagine nella partizione inattiva, si riavvia sull’aggiornata; in caso di failure può tornare alla vecchia
  • Automatic updates — di default ogni nodo si aggiorna automaticamente secondo politiche di “canal” (stable, beta, alpha)
  • Cloud-config — file YAML di provisioning (poi sostituito da Ignition in versioni successive) per configurare unità systemd, account, rete, certificati
  • Systemd everywhere — tutti i servizi sono unit systemd, inclusi Docker
  • Licenza Apache 2.0 per i componenti originali CoreOS

I componenti CoreOS

L’ecosistema iniziale CoreOS si articola in:

  • CoreOS Linux — la distribuzione base
  • etcd (febbraio 2014) — distributed key-value store consistente (Raft consensus), per configurazione distribuita. Diventerà componente centrale di Kubernetes
  • fleet — orchestratore di servizi distribuiti su cluster CoreOS, basato su systemd + etcd. Poi deprecato a favore di Kubernetes
  • rkt (Rocket, 2014) — runtime container alternativo a Docker, con approccio più modulare
  • flannel — networking per container
  • Container Linux Update Operator — componente successivo di gestione aggiornamenti

La filosofia “immutable infrastructure”

CoreOS promuove il concetto di immutable infrastructure: i server non vengono configurati modificandoli, ma sostituendoli. Se cambi qualcosa al sistema base, ricostruisci un’immagine nuova, la rilasci, i nodi si riavviano aggiornati. È l’opposto del modello pets tradizionale; anticipa pratiche che diventeranno diffuse nell’era Kubernetes.

Questo approccio si abbina naturalmente ai container Docker: l’applicazione è l’immagine container, il sistema operativo è l’immagine CoreOS, entrambi sono artefatti versionati e riproducibili.

Il mercato container emergente

Al debutto 2013 i concorrenti di CoreOS sono ancora ridotti:

  • Ubuntu Core (Canonical) — in preparazione, rilascio 2014-2015
  • RancherOS (Rancher Labs) — 2015, molto minimale
  • Project Atomic (Red Hat) — 2014, distribuzioni trimmed di RHEL/CentOS per container

CoreOS ha la prima mossa e una comunità forte. È la scelta di riferimento nascente per cluster container in produzione tra startup Docker-native, deploy su AWS e GCE, e primi ambienti on-premise.

Nel contesto italiano

A fine 2013 CoreOS è adottato sperimentalmente da team italiani avanzati (startup Docker-native, laboratori di ricerca, alcuni grandi ISP). Il mercato italiano è appena all’inizio della curva container.


Riferimenti: CoreOS (ottobre 2013), Alex Polvi, Brandon Philips. Prima release pubblica dicembre 2013. etcd, fleet, rkt. Licenza Apache 2.0.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi