Opublikowano wydanie projektu Kata Containers 3.2, rozwijającego stos do organizacji wykonania kontenerów z wykorzystaniem izolacji opartej na pełnoprawnych mechanizmach wirtualizacji. Projekt został stworzony przez firmy Intel i Hyper, łącząc technologie Clear Containers i runV. Kod projektu jest napisany w językach Go i Rust i jest dystrybuowany na licencji Apache 2.0. Rozwój projektu nadzoruje grupa robocza utworzona pod egidą niezależnej organizacji OpenStack Foundation, w której uczestniczą takie firmy jak Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE i ZTE.
Podstawą Kata jest runtime, który pozwala na tworzenie kompaktowych maszyn wirtualnych działających z wykorzystaniem pełnoprawnego hyperwizora, zamiast tradycyjnych kontenerów, które wykorzystują wspólne jądro Linux i są izolowane przy pomocy przestrzeni nazw i cgroups. Zastosowanie maszyn wirtualnych pozwala na osiągnięcie wyższego poziomu bezpieczeństwa, chroniącego przed atakami wynikającymi z eksploatacji luk w jądrze Linux.
Kata Containers jest ukierunkowany na integrację z istniejącymi infrastrukturami izolacji kontenerów, z możliwością stosowania podobnych maszyn wirtualnych do wzmocnienia ochrony tradycyjnych kontenerów. Projekt oferuje mechanizmy zapewniające kompatybilność lekkich maszyn wirtualnych z różnymi infrastrukturami izolacji kontenerów, platformami orkiestracji kontenerów oraz specyfikacjami takimi jak OCI (Open Container Initiative), CRI (Container Runtime Interface) i CNI (Container Networking Interface). Dostępne są narzędzia do integracji z Dockerem, Kubernetes, QEMU i OpenStack.
Integracja z systemami zarządzania kontenerami osiągana jest dzięki warstwie symulującej zarządzanie kontenerem, która przez interfejs gRPC oraz specjalny proxy komunikuje się z agentem zarządzającym w maszynie wirtualnej. W obrębie wirtualnego środowiska, które uruchamia hyperwizor, stosowane jest specjalnie zoptymalizowane jądro Linux, zawierające jedynie minimalny zestaw niezbędnych możliwości.
Jako hipernadzorca obsługiwany jest Dragonball Sandbox (wydanie KVM, zoptymalizowane pod kątem kontenerów) z narzędziami QEMU, a także Firecracker i Cloud Hypervisor. Środowisko systemowe obejmuje demona inicjalizacyjnego i agenta (Agent). Agent zapewnia uruchamianie obrazów kontenerów w formacie OCI dla Dockera i CRI dla Kubernetesa określonych przez użytkownika. Przy użyciu Dockera dla każdego kontenera tworzone jest oddzielne maszyna wirtualna, tzn. uruchamiane na hipernadzorze środowisko jest stosowane do zagnieżdżonego uruchamiania kontenerów.

Aby zmniejszyć zużycie pamięci, wdrożono mechanizm DAX (bezpośredni dostęp do systemu plików z pominięciem pamięci podręcznej stron bez wykorzystywania poziomu urządzeń blokowych), a do deduplikacji powtarzających się obszarów pamięci stosowana jest technologia KSM (Kernel Samepage Merging), co pozwala na zorganizowanie wspólnego wykorzystania zasobów systemu gospodarza i podłączenie do różnych systemów gościnnych wspólnego szablonu środowiska systemowego.
W nowej wersji:
- Oprócz wsparcia dla architektury AMD64 (x86_64) zapewniono wydania dla architektur ARM64 (Aarch64) i s390 (IBM Z). W opracowaniu jest wsparcie dla architektury ppc64le (IBM Power).
- Do organizacji dostępu do obrazów kontenerów wykorzystana została system plików Nydus 2.2.0, w którym stosuje się adresowanie według zawartości dla efektywnej współpracy z typowymi obrazami. Nydus obsługuje ładowanie obrazów w locie (ładowanie tylko w razie potrzeby), zapewnia deduplikację powtarzających się danych i może korzystać z różnych backendów do rzeczywistego przechowywania. Oferuje zgodność z POSIX (analogicznie do Composefs, implementacja Nydus łączy funkcje OverlayFS z EROFS lub modułem FUSE).
- Do głównego składu projektu Kata Containers zintegrowano menedżera maszyn wirtualnych Dragonball, który teraz będzie rozwijany w ogólnym repozytorium.
- Do narzędzia kata-ctl dodano funkcję debugowania umożliwiającą połączenie z maszyną wirtualną z środowiska gospodarza.
- Rozszerzono możliwości zarządzania GPU i dodano wsparcie dla przekazywania GPU do kontenerów dla poufnych obliczeń (Confidential Container), w którym zapewnione jest szyfrowanie danych, pamięci i stanu wykonywania w celu ochrony w przypadku kompromitacji środowiska gospodarza lub hipernadzorcy.
- W Runtime-rs dodano podsystem do zarządzania urządzeniami używanymi w kontenerach lub środowiskach sandbox. Obsługiwane są urządzenia vfio, blokowe, sieciowe i inne typy urządzeń.
- Zachowana zgodność z OCI Runtime 1.0.2 i Kubernetes 1.23.1.
- Zalecana wersja jądra Linux to 6.1.38 z poprawkami.
- Rozwój przeszedł z systemu ciągłej integracji Jenkins na GitHub Actions.
Źródło: opennet.ru
