WebAssembly(Wasm)
Первоначально создан для браузеров,Сейчас существоватьсуществовать серверная часть также становится все более популярной. существуют, мне кажется,Причина, по которой существование WebAssembly становится популярным в облачной экосистеме, заключается в том, что она относительно,включатьМеньший размер、Быстрее、Безопасность Сильный полипортативныйвысший пол。
В этой статье я кратко представлю WebAssembly и объясню ее преимущества. Затем в следующей статье мы обсудим, как выполнять модули Wasm с помощью контейнерных инструментов, включая среды выполнения контейнеров низкого уровня, среды выполнения контейнеров высокого уровня и Kubernetes.
WebAssembly
— это технология байт-кода общего назначения, позволяющая программам, написанным на различных языках (например, Go、Rust и C/C++) компилируется в байт-код, который может выполняться непосредственно в веб-браузере и на сервере.
WebAssembly был разработан с нуля для решения проблем с производительностью JavaScript. Используя WebAssembly, разработчики могут компилировать код в низкоуровневый двоичный формат, который выполняется в современных веб-браузерах со скоростью, близкой к исходной.
В марте 2019 года Mozilla выпустила системный интерфейс WebAssembly (WASI), спецификацию API, которая определяет стандартный интерфейс между модулями WebAssembly и средой хоста. WASI позволяет модулям Wasm безопасно получать доступ к системным ресурсам, включая сеть, файловую систему и т. д. Это значительно расширяет возможности запуска WebAssembly не только в браузере, но и на сервере.
WebAssembly предлагает несколько существенных преимуществ по сравнению с традиционными контейнерами:
Вы можете проверить эту таблицу для подробного сравнения WebAssembly иконтейнер之间из差异:WebAssembly vs Linux Container
:https://wasmedge.org/wasm_linux_container/
。
Простой способ реализовать модули Wasm в экосистеме контейнеров — включить байт-код Wasm в образ контейнера Linux. В частности, операционную систему Linux внутри контейнера можно сократить до компонентов, необходимых для поддержки среды выполнения Wasm. Поскольку модули Wasm хранятся в стандартных контейнерах, они могут легко интегрироваться с любой существующей экосистемой контейнеров.
Упрощенная операционная система Linux имеет меньшую поверхность атаки, чем обычная операционная система Linux. Однако этот подход по-прежнему требует запуска контейнера Linux. Хотя операционная система Linux сокращена, на ее долю по-прежнему приходится 80% размера образа контейнера.
Воля Wasm модуль, встроенный в Linux Преимущество контейнеров заключается в том, что они обеспечивают плавную интеграцию с существующими средами, а также возможность Wasm получить выгоду от улучшения производительности. Однако при прямом Запуске модулей Wasm в среде выполнения контейнера с поддержкой По сравнению с Wasm этот метод менее эффективен.
Вообще говоря, время выполнения контейнера можно разделить на два уровня: время выполнения высокого уровня и время выполнения низкого уровня.
OCI
Стандартная реализация может получить работоспособную файловую систему (rootfs) и файл конфигурации (config.json) для выполнения изолированных процессов. Среда выполнения контейнера низкого уровни прямого управления и запуска контейнера, например runc、crun、youki、gvisor и kata。Containerd
и CRI-O
две популярные Расширенная среда выполнения контейнера。мы можемсуществовать Низкий уровеньи Расширенная среда выполнения контейнеравключено в Wasm поддерживать.
Запуск напрямую через среду выполнения контейнера низкого уровня. Wasm модуль, есть несколько доступных опций, таких как crun
и youki
,Эти параметры имеют встроенную поддержку Wasm.
Запуск через расширенную среду выполнения контейнера Wasm модуль час,CRI-O
и containerd
Все это хороший выбор. Есть два возможных метода:
runwasi
подпроект, вы можете разработать containerd-wasm-shim
,直接и Wasm время выполнения (например, WasmEdge
и Wasmtime
)взаимодействовать。так containerd Может существовать, не полагаясь на низкоуровневые среды выполнения. Wasm модуль, но вызывайте его напрямую Wasm время выполнения. Это не только сокращает путь вызова, но и повышает эффективность.WebAssembly является движущей силой третьей волны облачных вычислений. Будучи стандартом де-факто в оркестрации контейнеров, Kubernetes продолжает развиваться, чтобы воспользоваться преимуществами, которые дает WebAssembly.
Для запуска рабочих нагрузок Wasm в Kubernetes необходимы два ключевых компонента:
containerd
и CRI-O
)и支持 Wasm Низкосортное время выполнения (например, crun
и youki
)Для достижения этой настройки。RuntimeClass
объект. Класс выполнения иметь дело с Kubernetes В кластере есть несколько проблем во время выполнения. Некоторые узлы могут поддерживать. Wasm время выполнения, в то время как другие узлы могут поддерживать обычное время выполнения контейнера. Вы можете использовать RuntimeClass Воля Wasm Рабочие нагрузки специально запланированы Wasm узел во время выполнения.быть в Kubernetes включен на узле Wasm Поддерживается, можно использовать Kwasm Operator Автоматизируйте процесс вместо ручной установки с помощью Wasm 运行час库изконтейнер运行час。Kwasm(https://kwasm.sh/
) это Kubernetes Оператор, который автоматически создает Kubernetes Узел добавлен WebAssembly поддерживать.Operator использовать kwasm-node-installer(https://github.com/KWasm/kwasm-node-installer
) проект по изменению основного Kubernetes узел.
WebAssembly Обеспечивает эффективный и действенный метод выполнения кода и Kubernetes ноэто强大изконтейнерплатформа оркестровки。Cloud Native WebAssembly
существоватьсерверив облакахиспользовать Васм, использовать Kubernetes Подождите, пока инструменты оркестрации развернутся и будут управляться. Wasm приложение. Объединив эти технологии,Мы можем создавать гибкие, высокопроизводительные и масштабируемые облачные приложения. Эта конвергенция открывает инновационные возможности,Может разрабатывать передовую бессерверную архитектуру, решения для периферийных вычислений.,В то же время это обеспечивает совместимость в различных средах.
Исходная ссылка: https://www.cncf.io/blog/2024/03/12/webassembly-on-kubernetes-from-containers-to-wasm-part-01/