Opublikowano wersję projektu Kata Containers 3.4, rozwijającego zestaw do uruchamiania kontenerów z wykorzystaniem izolacji opartej na pełnoprawnych mechanizmach wirtualizacji. Projekt został stworzony przez firmy Intel i Hyper poprzez połączenie technologii 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 OpenInfra Foundation, w której biorą udział 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.
Do organizacji dostępu do obrazów kontenerów wykorzystano system plików Nydus, który korzysta z adresowania opartego na zawartości dla efektywnej współpracy z typowymi obrazami. Nydus obsługuje ładowanie obrazów na żądanie (ładowane tylko w razie potrzeby), zapewnia deduplikację powtarzających się danych i może korzystać z różnych backendów do rzeczywistego przechowywania. Zapewnia zgodność z POSIX (w podobny sposób jak Composefs, implementacja Nydus łączy możliwości OverlayFS z EROFS lub modułem FUSE).
W nowej wersji:
- Do menedżera maszyn wirtualnych Dragonball dodano wsparcie dla gorącego podłączania GPU oraz możliwość używania rejestrów MTRR (Memory-Type Range Registers) do organizacji dostępu do obszarów pamięci fizycznej.
- W runtime-rs, implementacji runtime w języku Rust, zapewniono pełną obsługę wątków, pid i tid, a także przerobiono sterownik qemu, który jest wykorzystywany w systemach z architekturą s390 (IBM Z).
- Zaktualizowano serwis do tworzenia zrzutów za pomocą FS Nydus.
- W serwisie zarządzania obrazami kontenerów zwiększono efektywność pracy z pamięcią.
- Domyślnie włączono montowanie hierarchii cgroups-v2 podczas uruchamiania przy użyciu systemd.
- Dodano możliwość określenia limitu czasowego dla ograniczenia czasu pobierania bardzo dużych obrazów w systemach gościnnych.
- Dodano wsparcie dla budowy agenta OPA (Open Policy Agent) dla architektur ppc64le i s390x.
Źródło: opennet.ru
