Wydanie Kata Containers 3.0 z izolacją opartą na wirtualizacji

Po dwóch latach rozwoju opublikowano wydanie projektu Kata Containers 3.0, 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 .

Sercem Kata jest środowisko wykonawcze, które umożliwia tworzenie kompaktowych maszyn wirtualnych, które działają przy użyciu pełnego hypervisora, zamiast korzystać z tradycyjnych kontenerów korzystających ze wspólnego jądra Linuksa i izolowanych przy użyciu przestrzeni nazw i grup c. 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.

Wydanie Kata Containers 3.0 z izolacją opartą na wirtualizacji

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.0 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:

  • Zaproponowano alternatywny runtime (runtime-rs), który stanowi wypełnienie kontenerów, napisany w języku Rust (dostarczony wcześniej runtime został napisany w języku Go). Runtime jest kompatybilny z OCI, CRI-O i Containerd, dzięki czemu można go używać z Dockerem i Kubernetesem.
  • Zaproponowano nowy hypervisor Dragonball oparty na KVM i rust-vmm.
  • Dodano obsługę przekazywania dostępu do procesora graficznego za pomocą VFIO.
  • Dodano obsługę cgroup v2.
  • Zaimplementowano obsługę zmiany ustawień bez zmiany głównego pliku konfiguracyjnego poprzez zamianę bloków w osobnych plikach znajdujących się w katalogu „config.d/”.
  • Komponenty Rusta zawierają nową bibliotekę do bezpiecznej pracy ze ścieżkami plików.
  • Komponent virtiofsd (napisany w C) został zastąpiony przez virtiofsd-rs (napisany w Rust).
  • Dodano obsługę komponentów QEMU w trybie piaskownicy.
  • QEMU używa interfejsu API io_uring dla asynchronicznych operacji we/wy.
  • Wprowadzono obsługę rozszerzeń Intel TDX (Trusted Domain Extensions) dla QEMU i hypervisora ​​chmury.
  • Zaktualizowano komponenty: QEMU 6.2.0, Cloud-hypervisor 26.0, Firecracker 1.1.0, jądro Linux 5.19.2.

Źródło: opennet.ru

Dodaj komentarz