Dopo due anni di sviluppo, è stata pubblicata la versione 3.0 del progetto Kata Containers, che sviluppa un framework per l'esecuzione di container utilizzando l'isolamento basato su meccanismi di virtualizzazione completi. Il progetto è stato creato dalle aziende Intel e Hyper, combinando le tecnologie Clear Containers e runV. Il codice del progetto è scritto in Go e Rust, ed è distribuito con licenza Apache 2.0. Lo sviluppo del progetto è supervisionato da un gruppo di lavoro istituito sotto l'egida dell'organizzazione indipendente OpenStack Foundation, che include 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 tradizionali container che condividono il kernel Linux e sono isolate tramite namespace e cgroups. L'uso di di macchine virtuali permette di raggiungere un livello di sicurezza superiore, proteggendo da attacchi derivanti dall'utilizzo di vulnerabilità nel kernel Linux.
Kata Containers è orientato all'integrazione nelle infrastrutture di isolamento dei contenitori esistenti, con la possibilità di utilizzare macchine virtuali simili per aumentare la protezione dei contenitori tradizionali. Il progetto fornisce meccanismi per garantire la compatibilità delle macchine virtuali leggere con varie infrastrutture di isolamento dei contenitori, piattaforme di orchestrazione dei contenitori e specifiche quali 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 avviene tramite uno strato che simula la gestione del contenitore, il quale accede all'agente di controllo nella macchina virtuale attraverso un'interfaccia gRPC e un proxy speciale. All'interno dell'ambiente virtuale, avviato dal hypervisor, viene utilizzato un kernel Linux appositamente ottimizzato, contenente solo un insieme minimo di funzionalità necessarie.
Come hypervisor è supportato l'uso di Dragonball Sandbox (edizione KVM, ottimizzata per i container) con gli strumenti QEMU, così come Firecracker e Cloud Hypervisor. L'ambiente di sistema include un demone di inizializzazione e un agente (Agent). L'agente garantisce l'esecuzione di immagini container specificate dall'utente in formato OCI per Docker e CRI per Kubernetes. Quando utilizzato insieme a Docker, viene creato un environment separato per ogni container la macchina virtuale, cioè l'ambiente eseguibile sopra il hypervisor è applicato per l'esecuzione nidificata dei container.

Per ridurre il consumo di memoria viene utilizzato 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 applicata la tecnologia KSM (Kernel Samepage Merging), consentendo così la condivisione delle risorse del sistema host e la connessione a diversi sistemi ospiti tramite un modello comune dell'ambiente di sistema.
Nella nuova versione:
- È stato proposto un runtime alternativo (runtime-rs) per la creazione del contenuto dei container, sviluppato in Rust (il runtime precedente era scritto in Go). Il runtime è compatibile con OCI, CRI-O e Containerd, consentendo il suo utilizzo con Docker e Kubernetes.
- È stato proposto un nuovo hypervisor dragonball, basato su KVM e rust-vmm.
- Aggiunta la supporto per il pass-through della GPU, utilizzando VFIO.
- Aggiunto il supporto per cgroup v2.
- Implementato il supporto per la sostituzione delle impostazioni senza modificare il file di configurazione principale sostituendo blocchi in file separati, posizionati nella directory "config.d/".
- Nei componenti scritti in Rust è stata introdotta una nuova libreria per la gestione sicura dei percorsi dei file.
- Il componente virtiofsd (scritto in C) è stato sostituito da virtiofsd-rs (scritto in Rust).
- Aggiunto il supporto per l'isolamento sandbox dei componenti QEMU.
- In QEMU è stata impiegata 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).
- Componenti aggiornati: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, kernel Linux 5.19.2.
Fonte: opennet.ru
