|
Опубликован выпуск проекта Kata Containers 4.0, развивающего стек для организации выполнения контейнеров с использованием изоляции на базе полноценных механизмов виртуализации. Проект создан компаниями Intel и Hyper путём объединения технологий Clear Containers и runV. Код проекта написан на языках Go и Rust, и распространяется под лицензией Apache 2.0. Развитие проекта курирует рабочая группа, созданная под эгидой независимой организации OpenInfra Foundation, в которой участвуют такие компании, как Canonical, China Mobile, Dell/EMC, EasyStack, Google, Huawei, NetApp, Red Hat, SUSE и ZTE.
Основу Kata составляет runtime, позволяющий создавать компактные виртуальные машины, выполняемые с использованием полноценного гипервизора, вместо применения традиционных контейнеров, в которых используется общее ядро Linux и изоляция на основе пространств имён и cgroups. Применение виртуальных машин позволяет добиться более высокого уровня безопасности, защищающего от совершения атак, вызванных эксплуатацией уязвимостей в ядре Linux.
Версия Kata Containers 4.0 примечательна переходом по умолчанию на новый runtime (runtime-rs), написанный на языке Rust. Старый runtime, написанный на языке Go, оставлен в качестве опции, но помечен устаревшим и намечен для удаления в ветке 5.0.0 (например, ветка Kata Containers 4.0 выпущена спустя почти 4 года после ветки 3.0). Разработка runtime на языке Go отныне ограничится только исправлением ошибок.
Переработка runtime на языке Rust позволила сократить потребление памяти, повысить производительность, сократить время запуска и усилить безопасность кода обеспечения изоляции контейнеров. По функциональности runtime-rs близок к старому runtime, за исключением возможностей, ранее помеченных устаревшими или оставшимися без сопровождения. Из возможностей runtime-rs отмечается:
- Поддержка гипервизоров Cloud Hypervisor (на базе Rust-VMM), Firecracker (ответвление от CrosVM, развиваемое Amazon), Dragonball (редакция KVM, оптимизированная для контейнеров) и QEMU.
- Поддержка архитектур: ARM64, Intel/AMD (x86_64), IBM s390x, IBM PowerPC и RISC-V.
- Возможность проброса в контейнер GPU NVIDIA при использовании QEMU.
- Интеграция с платформами оркестровки контейнеров Kubernetes и Docker.
Kata Containers ориентирован на интеграцию в существующие инфраструктуры контейнерной изоляции для усиления защиты традиционных контейнеров при помощи виртуальных машин. Проектом предоставляются механизмы для обеспечения совместимости легковесных виртуальных машины с различными инфраструктурами контейнерной изоляции, платформами оркестровки контейнеров и спецификациями, такими как OCI (Open Container Initiative), CRI (Container Runtime Interface) и CNI (Container Networking Interface).
Интеграция с системами управления контейнерами осуществляется при помощи прослойки, симулирующей управление контейнером, которая через gRPC-интерфейс и специальный прокси обращается к управляющему агенту в виртуальной машине. Внутри каждого виртуального окружения, которое запускается гипервизором, используется специально оптимизированное ядро Linux, содержащее только минимальный набор необходимых возможностей. Системное окружение включает в себя фоновый процесс инициализации и агент (Аgent). Агент обеспечивает выполнение определённых пользователем образов контейнера в формате OCI для Docker и CRI для Kubernetes.
Для уменьшения потребления памяти применяется механизм DAX (прямой доступ к ФС в обход страничного кэша без применения уровня блочных устройств), а для дедупликации одинаковых областей памяти применяется технология KSM (Kernel Samepage Merging), что позволяет организовать совместное использование ресурсов хост-системы и подключить к разным гостевым системам общий шаблон системного окружения. Для организации доступа к образам контейнеров может использоваться файловая система Nydus, в которой используется адресация по содержимому для эффективной совместной работы с типовыми образами. Nydus поддерживает загрузку образов на лету, обеспечивает дедупликацию повторяющихся данных и может использовать разные бэкенды для фактического хранения.
|