Wydanie Kata Containers 3.2 z izolacją opartą na wirtualizacji

Opublikowano wydanie projektu Kata Containers 3.2, rozwijającego 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 napisany jest w Go i Rust i jest rozpowszechniany na licencji Apache 2.0. Nad rozwojem projektu czuwa grupa robocza utworzona pod patronatem niezależnej organizacji OpenStack Foundation, w skład której wchodzą takie firmy jak Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE i ZTE .

Kata opiera się na środowisku wykonawczym, które pozwala tworzyć kompaktowe maszyny wirtualne, które działają przy użyciu pełnego hypervisora, zamiast korzystać z tradycyjnych kontenerów, które korzystają ze wspólnego jądra Linuksa i są izolowane za pomocą przestrzeni nazw i grup cgroup. Zastosowanie maszyn wirtualnych pozwala na osiągnięcie wyższego poziomu bezpieczeństwa chroniącego przed atakami spowodowanymi wykorzystaniem luk w jądrze Linuksa.

Kata Containers koncentruje się na integracji z istniejącą infrastrukturą izolacji kontenerów z możliwością korzystania z podobnych maszyn wirtualnych w celu zwiększenia ochrony tradycyjnych kontenerów. Projekt zapewnia mechanizmy zapewniające kompatybilność lekkich maszyn wirtualnych z różnymi infrastrukturami izolacji kontenerów, platformami orkiestracji kontenerów i 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, Kubernetesem, QEMU i OpenStack.

Integracja z systemami zarządzania kontenerami realizowana jest poprzez warstwę symulującą zarządzanie kontenerami, która uzyskuje dostęp do agenta zarządzającego na maszynie wirtualnej poprzez interfejs gRPC i specjalny proxy. Wewnątrz środowiska wirtualnego, które uruchamia hiperwizor, wykorzystywane jest specjalnie zoptymalizowane jądro Linuksa, zawierające jedynie minimalny zestaw niezbędnych możliwości.

Jako hypervisor obsługuje wykorzystanie Dragonball Sandbox (edycja KVM zoptymalizowana pod kątem kontenerów) z zestawem narzędzi QEMU, a także Firecracker i Cloud Hypervisor. Środowisko systemowe obejmuje demona inicjującego i agenta. Agent zapewnia wykonanie zdefiniowanych przez użytkownika obrazów kontenerów w formacie OCI dla Dockera i CRI dla Kubernetes. W połączeniu z Dockerem dla każdego kontenera tworzona jest osobna maszyna wirtualna, tj. Środowisko działające na hypervisorze służy do zagnieżdżonego uruchamiania kontenerów.

Wydanie Kata Containers 3.2 z izolacją opartą na wirtualizacji

W celu ograniczenia zużycia pamięci zastosowano mechanizm DAX (bezpośredni dostęp do systemu plików, ominięcie pamięci podręcznej strony bez użycia poziomu urządzenia blokowego), a do deduplikacji identycznych obszarów pamięci zastosowano technologię KSM (Kernel Samepage Merging), która pozwala do organizowania współdzielenia zasobów systemu hosta i łączenia się z różnymi systemami-gościami, korzystają ze wspólnego szablonu środowiska systemowego.

W nowej wersji:

  • Oprócz obsługi architektury AMD64 (x86_64), dostępne są wersje dla architektur ARM64 (Aarch64) i s390 (IBM Z). Trwają prace nad obsługą architektury ppc64le (IBM Power).
  • Do organizacji dostępu do obrazów kontenerów wykorzystywany jest system plików Nydus 2.2.0, który wykorzystuje adresowanie treści w celu wydajnej współpracy ze standardowymi obrazami. Nydus obsługuje ładowanie obrazów w locie (pobiera tylko w razie potrzeby), zapewnia deduplikację zduplikowanych danych i może używać różnych backendów do rzeczywistego przechowywania. Zapewniona jest kompatybilność z POSIX (podobnie jak Composefs, implementacja Nydus łączy możliwości OverlayFS z modułem EROFS lub FUSE).
  • Menedżer maszyn wirtualnych Dragonball został zintegrowany z główną strukturą projektu Kata Containers, która będzie teraz rozwijana we wspólnym repozytorium.
  • Do narzędzia kata-ctl dodano funkcję debugowania umożliwiającą łączenie się z maszyną wirtualną ze środowiska hosta.
  • Rozszerzono możliwości zarządzania procesorami graficznymi i dodano obsługę przekazywania procesorów graficznych do kontenerów w celu przetwarzania poufnego (kontener poufny), który zapewnia szyfrowanie danych, pamięci i stanu wykonania w celu ochrony w przypadku naruszenia bezpieczeństwa środowiska hosta lub hiperwizora.
  • Do Runtime-rs dodano podsystem zarządzania urządzeniami używanymi w kontenerach lub środowiskach sandbox. Obsługuje pracę z urządzeniami vfio, block, sieciowymi i innymi typami.
  • Zapewniona jest kompatybilność z OCI Runtime 1.0.2 i Kubernetes 1.23.1.
  • Zalecane jest używanie wersji 6.1.38 z poprawkami jako jądra Linuksa.
  • Rozwój został przeniesiony z korzystania z systemu ciągłej integracji Jenkins do GitHub Actions.

Źródło: opennet.ru

Dodaj komentarz