Dopo due anni di sviluppo, è stata pubblicata la versione 3.0 del progetto Kata Containers, che sviluppa un framework per l'esecuzione di contenitori utilizzando l'isolamento basato su meccanismi di virtualizzazione completi. Il progetto è stato creato da Intel e Hyper attraverso la fusione delle tecnologie Clear Containers e runV. Il codice del progetto è scritto in Go e Rust e distribuito sotto licenza Apache 2.0. Lo sviluppo del progetto è supervisionato da un gruppo di lavoro istituito sotto l'egida della OpenStack Foundation, che coinvolge aziende come Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE e ZTE.
La base di Kata è un runtime che consente di creare macchine virtuali compatte, eseguite utilizzando un hypervisor completo, anziché utilizzare contenitori tradizionali che condividono il kernel Linux e sono isolati tramite spazi dei nomi e cgroups. L'uso di macchine virtuali permette di raggiungere un livello di sicurezza più elevato, proteggendo da attacchi causati dall'exploitation di vulnerabilità nel kernel Linux.
Kata Containers è progettato per l'integrazione nelle infrastrutture esistenti di isolamento dei contenitori con la possibilità di utilizzare tali macchine virtuali per migliorare la protezione dei contenitori tradizionali. Il progetto fornisce meccanismi per garantire la compatibilità delle macchine virtuali leggere con diverse infrastrutture di isolamento dei contenitori, piattaforme di orchestrazione dei contenitori e specifiche come OCI (Open Container Initiative), CRI (Container Runtime Interface) e CNI (Container Networking Interface). Sono disponibili strumenti per l'integrazione con Docker, Kubernetes, QEMU e OpenStack.

L'integrazione con i sistemi di gestione dei contenitori viene raggiunta tramite un livello che simula la gestione del contenitore, il quale, attraverso un'interfaccia gRPC e un proxy speciale, si rivolge all'agente di controllo nella macchina virtuale. All'interno dell'ambiente virtuale, avviato dall'hypervisor, viene utilizzato un kernel Linux appositamente ottimizzato, contenente solo il set minimo di funzionalità necessarie.
Come hypervisor, è supportato l'uso di Dragonball Sandbox (edizione KVM, ottimizzata per i container) con l'insieme di strumenti QEMU, oltre a Firecracker e Cloud Hypervisor. L'ambiente di sistema include un demone di inizializzazione e un agente (Agent). L'agente consente l'esecuzione di immagini di container fornite dall'utente in formato OCI per Docker e CRI per Kubernetes. Quando viene utilizzato insieme a Docker, per ogni container viene creata una macchina virtuale, cioè l'ambiente avviato sopra l'iperparte viene utilizzato per l'avvio nidificato dei container.

Per ridurre il consumo di memoria viene applicato il meccanismo DAX (accesso diretto al file system bypassando la cache delle pagine senza utilizzare il livello dei dispositivi a blocchi), e per la deduplicazione delle aree di memoria identiche viene utilizzata la tecnologia KSM (Kernel Samepage Merging), che consente di organizzare la condivisione delle risorse del sistema host e di collegare a diversi sistemi guest un modello comune di ambiente di sistema.
Nella nuova versione:
- È stato proposto un runtime alternativo (runtime-rs), che costituisce il cuore dei contenitori, scritto in Rust (il precedente runtime era scritto in Go). Il runtime è compatibile con OCI, CRI-O e Containerd, il che consente di utilizzarlo con Docker e Kubernetes.
- È stato proposto un nuovo hypervisor chiamato dragonball, basato su KVM e rust-vmm.
- È stato aggiunto il supporto per il pass-through GPU, utilizzando VFIO.
- È stato aggiunto il supporto per cgroup v2.
- È stata implementata la possibilità di modificare le impostazioni senza modificare il file di configurazione principale, sostituendo i blocchi in file separati, situati nella cartella 'config.d/'.
- Nei componenti scritti in Rust è stata utilizzata una nuova libreria per un lavoro sicuro con i percorsi dei file.
- Il componente virtiofsd (scritto in C) è stato sostituito da virtiofsd-rs (scritto in Rust).
- È stato aggiunto il supporto per l'isolamento sandbox dei componenti QEMU.
- In QEMU è stato utilizzato l'API io_uring per l'input/output asincrono.
- Per QEMU e Cloud-hypervisor è stato implementato il supporto per le estensioni Intel TDX (Trusted Domain Extensions).
- Aggiornati i componenti: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, kernel Linux 5.19.2.
Fonte: opennet.ru
