Po dwóch latach rozwoju wydano projekt Kata Containers 3.0, rozwijający stos do organizowania wykonywania kontenerów przy użyciu izolacji opartej na pełnoprawnych mechanizmach wirtualizacji. Projekt został stworzony przez Intel i Hyper poprzez połączenie technologii Clear Containers i runV. Kod projektu jest napisany w Go i Rust i jest dystrybuowany na licencji Apache 2.0. Rozwój projektu jest nadzorowany przez grupę roboczą utworzoną pod auspicjami niezależnej OpenStack Foundation, do której należą takie firmy jak Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE i ZTE.
Kata opiera się na środowisku uruchomieniowym, które umożliwia tworzenie kompaktowych maszyn wirtualnych działających na pełnoprawnym hiperwizorze, zamiast korzystać z tradycyjnych kontenerów korzystających ze wspólnego jądra. Linux i izolowane za pomocą przestrzeni nazw i grup c. Aplikacja maszyna wirtualna zapewnia wyższy poziom bezpieczeństwa, chroniąc przed atakami wynikającymi z wykorzystywania luk w jądrze Linux.
Kata Containers koncentruje się na integracji z istniejącymi strukturami izolacji kontenerów, z możliwością wykorzystania takich maszyn wirtualnych do wzmocnienia tradycyjnych kontenerów. Projekt zapewnia mechanizmy zapewniające zgodność lekkich maszyn wirtualnych z różnymi strukturami izolacji kontenerów, platformami orkiestracji kontenerów i specyfikacjami, takimi jak OCI (Open Container Initiative), CRI (Container Runtime Interface) i CNI (Container Networking Interface). Narzędzia integracyjne są dostępne dla Docker, Kubernetes, QEMU i OpenStack.

Integracja z systemami zarządzania kontenerami odbywa się za pomocą warstwy zarządzania kontenerami, która komunikuje się z agentem zarządzającym w maszynie wirtualnej za pośrednictwem interfejsu gRPC i dedykowanego serwera proxy. W środowisku wirtualnym wykorzystywane jest specjalnie zoptymalizowane jądro, uruchamiane przez hiperwizor. Linux, zawierający jedynie minimalny zestaw niezbędnych funkcji.
Obsługiwanym hiperwizorem jest Dragonball Sandbox (edycja KVM zoptymalizowana pod kątem kontenerów) z QEMU, a także Firecracker i Cloud Hypervisor. Środowisko systemowe zawiera demona init i agenta. Agent umożliwia wykonywanie zdefiniowanych przez użytkownika obrazów kontenerów w formacie OCI dla Dockera i CRI dla Kubernetesa. W połączeniu z Dockerem, dla każdego kontenera tworzona jest osobna instancja. maszyna wirtualna, tzn. środowisko uruchomione na hypervisorze jest używane do zagnieżdżonego uruchamiania kontenerów.

W celu ograniczenia zużycia pamięci zastosowano mechanizm DAX (bezpośredni dostęp do systemu plików z pominięciem pamięci podręcznej stronicowania bez korzystania z poziomu urządzenia blokowego), a do deduplikacji identycznych obszarów pamięci zastosowano technologię KSM (Kernel Samepage Merging), która umożliwia współużytkowanie zasobów systemu hosta i połączenie wspólnego szablonu środowiska systemowego z różnymi systemami gościnnymi.
W nowej wersji:
- Proponowane jest alternatywne środowisko wykonawcze (runtime-rs), które tworzy wypełnienie kontenera, napisane w Rust (wcześniej dostarczone środowisko wykonawcze jest napisane w Go). Środowisko wykonawcze jest zgodne z OCI, CRI-O i Containerd, co pozwala na jego używanie z Dockerem i Kubernetesem.
- Zaproponowano nowy hiperwizor Dragonball bazujący na KVM i Rust-vmm.
- Dodano obsługę przekazywania dostępu do GPU przy użyciu VFIO.
- Dodano obsługę cgroup v2.
- Wprowadzono obsługę zastępowania ustawień bez zmiany głównego pliku konfiguracyjnego poprzez zastępowanie bloków w oddzielnych plikach znajdujących się w katalogu „config.d/”.
- Komponenty Rust korzystają z nowej biblioteki zapewniającej bezpieczną obsługę ścieżek plików.
- Komponent virtiofsd (napisany w języku C) został zastąpiony komponentem virtiofsd-rs (napisanym w języku Rust).
- Dodano obsługę izolacji piaskownicy komponentów QEMU.
- QEMU używa interfejsu API io_uring do asynchronicznego wejścia/wyjścia.
- Wprowadzono obsługę technologii Intel TDX (Trusted Domain Extensions) dla QEMU i Cloud-hipervisor.
- Zaktualizowane komponenty: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, jądro Linux 5.19.2.
Źródło: opennet.ru
