È stato pubblicato il rilascio del progetto Kata Containers 3.4, che sviluppa un stack per la gestione dell'esecuzione dei contenitori utilizzando isolamento basato su meccanismi di virtualizzazione completi. Il progetto è stato creato dalle aziende Intel e Hyper attraverso la fusione delle tecnologie Clear Containers e runV. Il codice del progetto è scritto in linguaggi Go e Rust e viene distribuito con licenza Apache 2.0. Lo sviluppo del progetto è supervisionato da un gruppo di lavoro creato sotto l'egida dell'organizzazione indipendente OpenInfra Foundation, che comprende 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 usando un hypervisor completo, anziché utilizzare contenitori tradizionali, che impiegano un kernel Linux condiviso e sono isolate tramite spazi dei nomi e cgroups. L'uso 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.
Per organizzare l'accesso alle immagini dei container è stata coinvolta la file system Nydus, che utilizza l'indirizzamento per contenuto per un'efficace cooperazione con immagini di tipo standard. Nydus supporta il caricamento a caldo delle immagini (caricandole solo quando necessario), offre deduplicazione dei dati ripetuti e può utilizzare diversi backend per l'archiviazione effettiva. È fornita compatibilità con POSIX (simile a Composefs, l'implementazione di Nydus combina le capacità di OverlayFS con EROFS o modulo FUSE).
Nella nuova versione:
- Nel gestore di macchine virtuali Dragonball è stata aggiunta la supporto per la connessione a caldo della GPU e la possibilità di utilizzare i registri MTRR (Memory-Type Range Registers) per organizzare l'accesso alle aree di memoria fisica.
- In runtime-rs, l'implementazione del runtime in linguaggio Rust, è stata assicurata la completa gestione dei thread, pid e tid, ed è stato riprogettato il driver qemu, che è utilizzato in sistemi con architettura s390 (IBM Z).
- È stato aggiornato il servizio per la creazione di snapshot utilizzando la file system Nydus.
- Nel servizio di gestione delle immagini dei container è stata migliorata l'efficienza del lavoro con la memoria.
- È abilitato di default il montaggio dell'gerarchia cgroups-v2 all'avvio tramite systemd.
- È stata aggiunta la possibilità di definire un timeout per limitare il tempo di ricezione di immagini molto grandi nei sistemi guest.
- È stato aggiunto il supporto per la build dell'agente OPA (Open Policy Agent) per le architetture ppc64le e s390x.
Fonte: opennet.ru
