[Linux-Biella] Openshift, Kubernetes e container vari
simone a caldana.org
simone a caldana.org
Gio 3 Ago 2017 12:46:48 CEST
Il 2017-08-02 22:54 Paolo Ciarrocchi ha scritto:
> Esperienza in merito?
> Cosa ne pensate?
Comincerei col distinguere tra le cose (anche a beneficio di chi non
conosce l'argomento).
I container sono una tecnologia che permette la gestione delle risorse a
livello di singolo processo (o gruppo di processi). Cosa significa?
Significa che invece di avere un unico sistema con una visione globale
delle risorse file, rete, eccetera io posso definire che un certo
processo veda certi filesystem e non altri, un altro processo veda certe
interfacce di rete e non altre, e posso anche decidere quante risorse
(cpu, ram, iops) ogni processo può usare nel tempo.
I container sono una forma di virtualizzazione? No: non ci sono multiple
macchine completamente separate, ci sono semplicemente "viste" diverse
del sistema. Questo significa che il kernel è uguale per tutti i
container, e anche che l'overhead dell'uso dei container è pressochè
nullo, pur permettendo la totale separazione tra container diversi: un
container non può sapere cosa c'è al di fuori del proprio mondo, e pensa
di essere da solo nel sistema.
Docker parte dal concetto di container linux (LXC) e aggiunge le
funzionalità di imaging del filesystem e tutta una serie di servizi
basali (mappature sulla rete, risoluzione di nomi, ecc) per gestire i
container con maggior facilità sul singolo host.
Tra gli altri vantaggi dei container Docker c'è il fatto che ogni
container si porta dietro tutti gli eseguibili, le librerie e le
configurazioni necessarie a funzionare, diventando quindi indipendente
dal resto del sistema operativo sul quale sta girando (ma non, come
detto prima, dal kernel).
Il principale svataggio è che essendo solo e dovendo essere autonomo un
container deve preoccuparsi non solo delle librerie ma anche dei servizi
di cui ha eventualmente bisogno per funzionare, primi fra tutti i dati
di cui abbisogna.
L'argomento container/Docker si vede spesso in relazione al contetto di
microservices o in generale di servizi in cloud, principalmente perchè
la loro natura effimera si sposa bene con la distribuzione spinta e la
natura del cloud computing. Allo scopo di gestire grandi quantità di
container ed orchestrarne l'esecuzione su ambienti distribuiti sono nati
sistemi come Kubernetes, che forniscono servizi di clustering e alta
disponibilità ai container. Tramite un cluster Kubernetes installato su
un certo numero di macchine possiamo quindi assicurarci che ci siano
sempre K container di quel tipo, J di quell'altro eccetera,
assicurandoci che il servizio offerto da un certo tipo di container sia
sempre disponibile.
Un altro concetto che si trova spesso negli ambienti cloud/microservizi
(ma non solo) è quello del Continous Deployment, cioè la capacità di
portare in produzione in maniera automatica e controllata le modifiche
fatte ad un servizio. I sistemi di CD molto spesso contengono servizi di
Continous Integration (cioè la compilazione e il testing automatico di
ogni versione prodotta dagli sviluppatori). Inoltre sistemi molto
complessi hanno la necessità di essere configurati e gestiti da
personale separato rispetto a quallo che sviluppa il software. Per
facilitare tutto questo nascono progetti come Openshift, che forniscono
un ambiente integrato che permette di passare dal dal sorgente al
servizio ridondato in produzione senza soluzione di continuità.
Openshift è un sistema di CD/CI multitenant (in grado quindi con
un'unica istanza di offrire i propri servizi a multipli utenti isolati e
separati) che usa Kubernetes per deployare in alta affidabilità i
container docker prodotti dal servizio di CI.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://list.bilug.it/pipermail/linux/attachments/20170803/981594c2/attachment.html>
Maggiori informazioni sulla lista
Linux