După doi ani de dezvoltare, a fost lansată versiunea 3.0 a proiectului Kata Containers, care dezvoltă un sistem pentru organizarea execuției containerelor folosind izolația bazată pe mecanisme complete de virtualizare. Proiectul a fost creat de companiile Intel și Hyper prin combinarea tehnologiilor Clear Containers și runV. Codul proiectului este scris în limbajele Go și Rust și este distribuit sub licența Apache 2.0. Dezvoltarea proiectului este coordonată de un grup de lucru creat sub egida organizației independente OpenStack Foundation, care include companii precum Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE și ZTE.
Baza Kata o constituie runtime-ul care oferă posibilitatea de a crea mașini virtuale compacte, executate cu un hipervizor complet, în loc să folosească containere tradiționale care utilizează un nucleu Linux comun și sunt izolate prin intermediul spațiilor de nume și cgroups. Aplicarea mașini virtuale permite atingerea unui nivel mai înalt de securitate, protejând împotriva atacurilor cauzate de exploatarea vulnerabilităților din nucleul Linux.
Kata Containers este orientat spre integrarea în infrastructurile existente de izolare a containerelor, cu posibilitatea de a utiliza astfel de mașini virtuale pentru a spori protecția containerelor tradiționale. Proiectul oferă mecanisme pentru asigurarea compatibilității mașinilor virtuale ușoare cu diverse infrastructuri de izolare a containerelor, platforme de orchestrare a containerelor și specificații precum OCI (Open Container Initiative), CRI (Container Runtime Interface) și CNI (Container Networking Interface). Sunt disponibile instrumente pentru integrarea cu Docker, Kubernetes, QEMU și OpenStack.

Integrarea cu sistemele de gestionare a containerelor se realizează printr-un strat care simulează gestionarea containerului, care, prin intermediul unei interfețe gRPC și a unui proxy special, se adresează agentului de control din mașina virtuală. În interiorul mediului virtual care rulează pe hypervisor, se folosește un nucleu Linux optimizat, care conține doar setul minim de funcționalități necesare.
Ca hipervizor este acceptat Dragonball Sandbox (ediția KVM, optimizată pentru containere) cu instrumentele QEMU, precum și Firecracker și Cloud Hypervisor. Mediul de sistem include un demon de inițializare și un agent (Agent). Agentul asigură executarea anumitor imagini de container specificate de utilizator în format OCI pentru Docker și CRI pentru Kubernetes. Atunci când este utilizat împreună cu Docker, pentru fiecare container se creează o mașină virtuală separată mașină virtuală, adică mediul lansat deasupra hipervizorului este utilizat pentru lansarea încuplată a containerelor.

Pentru a reduce consumul de memorie, se aplică mecanismul DAX (acces direct la FS ocolind cache-ul paginilor fără a utiliza nivelul dispozitivelor de bloc), iar pentru deduplicarea zonelor de memorie identice se aplică tehnologia KSM (Kernel Samepage Merging), ceea ce permite organizarea utilizării comune a resurselor sistemului gazdă și conectarea unui șablon comun al mediului de sistem la diferite sisteme gazdă.
În noua versiune:
- A fost propus un runtime alternativ (runtime-rs) care formează umplutura containerelor, scris în limbajul Rust (precedentul runtime era scris în limbajul Go). Runtime-ul este compatibil cu OCI, CRI-O și Containerd, permițând utilizarea sa cu Docker și Kubernetes.
- A fost propus un nou hipervizor dragonball, bazat pe KVM și rust-vmm.
- A fost adăugată suport pentru redirecționarea accesului la GPU, folosind VFIO.
- A fost adăugat suport pentru cgroup v2.
- A fost implementat suportul pentru înlocuirea setărilor fără a modifica fișierul de configurare principal prin înlocuirea blocurilor în fișiere separate, plasate în directorul „config.d/”.
- În componentele scrise în Rust a fost folosită o nouă bibliotecă pentru a lucra în siguranță cu căile de fișiere.
- Componenta virtiofsd (scrisă în C) a fost înlocuită cu virtiofsd-rs (scrisă în Rust).
- A fost adăugat suport pentru izolația sandbox a componentelor QEMU.
- În QEMU, pentru I/O asincron, a fost folosit API-ul io_uring.
- Pentru QEMU și Cloud-hypervisor a fost implementat suportul pentru extensiile Intel TDX (Trusted Domain Extensions).
- Au fost actualizate componentele: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, nucleul Linux 5.19.2.
Sursa: opennet.ro
