Kata Containers: basi, funzionamento e campi di applicazione
Kata Containers è un progetto portato avanti da una community open source indipendente che collabora per combinare i vantaggi di un sistema a container con quello di semplici macchine virtuali.
Vi spieghiamo cosa si nasconde dietro a questo progetto e come funziona nel dettaglio Kata Containers. Inoltre vi informeremo sui vantaggi e svantaggi e sugli scenari di sviluppo più amati dei container dal tempo di esecuzione sicuro.
Cos’è Kata Containers?
Dalla sua nascita nel dicembre del 2017, il progetto Kata Containers ha l’obiettivo di sviluppare macchine virtuali il più leggere possibile, che funzionino come un container nel look and feel. I container di Kata sono semplici da usare, molto compatibili, riescono a processare un carico di lavoro molto alto e dispongono inoltre di un elevato standard di sicurezza. Per questo la community punta a un forte isolamento verso l'esterno, e verso l’interno a una tecnologia di virtualizzazione hardware che rappresenta la seconda linea di difesa.
Il progetto Kata Containers è finanziato e gestito dalla OpenStack Foundation (OSF), che lotta per lo sviluppo e l’introduzione di un’infrastruttura di cloud computing aperta nel mondo. Per questo motivo, il codice di condotta della OSF rappresenta un importante orientamento per il lavoro collettivo della community open source. Il codice del progetto è ospitato da GitHub con una licenza Apache 2. Del comitato di Kata fanno parte anche grandi aziende come Google e Microsoft.
La OpenStack Foundation ha messo a disposizione su Youtube la seguente presentazione della durata di 30 minuti che spiega il progetto Kata Containers nel dettaglio:
Come funziona Kata Containers?
Che aspetto hanno di preciso l'architettura e il funzionamento dei container di Kata? Per rispondere a questa domanda, bisogna risalire alle origini del progetto. Nel dicembre del 2017, la community è riuscita a ricongiungere e scalare le componenti migliori di Intel Clear Containers (progetto di Intel per container di Linux più sicuri) con Hyper runV (tempo di esecuzione basato sulla componente Hypervisor per l’iniziativa di un progetto open container). In poche parole: le prestazioni di Intel si incontrano sulla piattaforma indipendente di Hyper.
Uno dei punti più importanti di ciascun sistema di container è la sicurezza. Poiché i container possono essere sovrapposti o stratificati, l'aspetto della sicurezza è spesso difficile da garantire. Perciò sia Intel che Hyper, sebbene con percorsi diversi ma con risultati simili, aspirano a un alto livello di flessibilità nell'area dei container. La stratificazione semplice dei formati di container come Kubernetes è possibile su OpenStack o viceversa così come la stratificazione complessa è possibile sia da Kubernetes su OpenStack che su Kubernetes. Questa flessibilità nella struttura dell'architettura desiderata semplifica enormemente l’utilizzo di Kata Containers senza dover necessariamente rinunciare alla sicurezza.
Kata permette di realizzare sia un isolamento della VM a livello del container che un isolamento del container attraverso la virtualizzazione dell'hardware. Nel caso di Kubernetes, l’isolamento della VM non è disponibile a livello di container, ma a livello di Podman o di pod, perché Kubernetes usa il termine pod invece di container. Per semplificare il tutto, però, parleremo anche più avanti di container.
L’impostazione e l'esecuzione di sistemi di container può essere molto complessa, poiché di solito, per diversi computer, devono essere messi a disposizione molti container. Managed Kubernetes di IONOS vi permette di pianificare, organizzare, mettere a disposizione i vostri container in modo semplice e scalarli liberamente.
Aspetto dell'architettura di Kata Containers
Il credo della community è di ottenere la massima semplicità e questo si rispecchia anche nell'architettura di Kata Containers, che prevede principalmente le sei componenti seguenti:
- Agent
- Runtime
- Proxy
- Shim (estensione per la compatibilità della rispettiva applicazione)
- Kernel (sistema operativo)
- Collegamento con QEMU 2.9 (software di virtualizzazione gratuito)
Queste caratteristiche fanno di Kata un progetto indipendente, molto compatibile e al tempo stesso molto sicuro. Oltre a x86_64, l'architettura può supportare anche AMD64, ARM e l’IBM system p e l’IBM system z. Inoltre Kata Containers permette anche di utilizzare più hypervisor, come QEMU, NEMU e Firecracker. È possibile anche l'integrazione nel progetto containerd.
Compatibilità
Kata 1.10 è compatibile con Docker Community Edition, ma supporta anche tutti gli altri standard industriali come il formato container OCI, le interfacce CRI di Kubernetes e altre tecnologie di virtualizzazione più datate tra cui la CRI-O (1.10 commit 393429 respektive CRI-Containerd version 1.0.0) o la OCI Runtime Specification (v1.0.0-rc5).
Tra i sistemi operativi supportati, che permettono il funzionamento di Kata Containers, ci sono:
- CentOS (7)
- Debian (9, 10)
- Fedora (28, 29, 30)
- Ubuntu (16.04, 18.04)
- Red Hat Enterprise Linux (7)
- OpenSUSE (Leap, Tumbleweed)
Differenze rispetto ai container tradizionali
Il vantaggio più grande dei container di Kata è il rapporto tra semplicità e prestazioni. Non è più necessario l’annidamento di container in macchine virtuali, perché la community utilizza interfacce standard, che ne semplificano enormemente l'apertura e la chiusura. Le prestazioni hanno la stessa coerenza di un container standard di Linux, ma grazie al maggior isolamento, non compromettono le prestazioni di una macchina virtuale standard. Il grafico seguente mostra una panoramica della struttura vantaggiosa.
In questo modo il progetto open source raggiunge il suo scopo nel settore dei container liberi, le cui componenti si comportano come container, ma offrono le prestazioni e la sicurezza di VM. In questo modo i container di Kata concretizzano la riflessione iniziale dei container, riguardo ad esempio la scalabilità.
Sicurezza
I container tradizionali sono leggeri, rapidi e possono essere integrati in modo semplice. Questo, però, aumenta i rischi di sicurezza, in particolare quando si trovano in un singolo sistema operativo. Quando i container dividono tra loro un kern, un path I/O, la stessa rete e la stessa memoria, basta attaccarne uno solo per danneggiare allo stesso tempo tutti gli altri.
I contenitori di Kata si comportano in modo del tutto diverso: la macchina virtuale opera in un kernel dedicato (kern del sistema operativo) attraverso il quale i processi vengono separati sia da quelli della rete e di I/O che da quelli della memoria. Oltre al forte isolamento già presente, può essere utilizzato anche l’isolamento rafforzato dall’hardware con estensioni di virtualizzazione VT.
Vantaggi e svantaggi di Kata Containers
Ci sono tanti punti a favore di questo ambizioso progetto open source della OpenStack Foundation. Anche Clear Linux (Intel) ha abbandonato la sua tecnologia di container originaria e supporta già con successo i container di Kata. Di seguito i principali vantaggi:
- ottima compatibilità
- uso semplice
- prestazioni elevate
- standard di sicurezza elevati
Un altro vantaggio è il basso consumo energetico, anche in caso di prestazioni elevate.
Kata però non è una distribuzione adatta a tutti gli scopi. Si tratta di un sistema specifico con limiti condizionati solo in parte da alcuni principi. Tra questi si trovano le operazioni che una macchina virtuale non permette, ma anche limitazioni che dovrebbero essere risolte negli aggiornamenti futuri. Una lista precisa dei limiti è fornita della community nella documentazione ufficiale su GitHub. Al momento Kata Containers è disponibile esclusivamente per le distribuzioni di Linux.
Un altro svantaggio da non sottovalutare: Kata è ancora agli esordi. Ma la base tecnica è già promettente e utilizzata in modo versatile.
Come si utilizzano i container di Kata?
Come già detto all’inizio, la community si attiene al codice di condotta della OSF che prevede, tra le varie cose, una gestione aperta di tutto il progetto, in particolare del codice sorgente. Questa apertura è data in particolare dal legame di entrambi i codebase open source integrati e virtualizzati. Tra i numerosi supporter troviamo ad esempio Kubernetes, Docker, OCI, CRI, CNI, QEMU, KVM e OpenStack.
Clear Containers e runV, che rappresentano la base tecnica di Kata Containers, sono utilizzati in tutto il mondo da grandi aziende, come ad esempio JD.com, una piattaforma di e-commerce cinese dal fatturato altissimo.
Di solito Kata Containers funziona al meglio, dove sono richiesti container che non devono operare su un kernel singolo. Tra questi troviamo i settori applicativi come l’integrazione e il deployment continui (CI/CD), edge computing, funzioni di rete virtualizzate come Containers-as-a-Service (CaaS). Per di più, Kata si addice anche alle implementazioni di nicchia, poiché non esiste nessun altro container così semplice, sicuro, flessibile e in grado di risparmiare così tante risorse.