エントリー済み

containerdにWasmを載せる ― runwasiがランタイムに求めるもの、ノードがshimに求めるもの

上級者 Runtime

version `GLIBC_2.39' not found ─ 手元で動いたcontainerd shimが、ノードでは起動しませんでした。shimはイメージの外、ノードに直接置かれるからです。
Zig製zwasmのshimをrunwasiで書き、kindで動くまでを3つのつなぎ目で見ます。zwasm固有は(2)の後半だけで、残りはランタイムを問いません。

(1)ビルド環境とノード:glibc要求を2シンボルに絞り込み、cargo zigbuildで下げる
(2)shimとcontainerd:runwasiがランタイムに求めるもの(stdioのFDなど)と、zwasmでexit codeが伝わらないとPodはどうなるか
(3)shimとクラスタ:配布、RuntimeClassの紐付け。テストは通るのに載せると動かない事故を、kindのノードイメージ内でshimを起動し検知するCI

同じ土台(shim v2とrunwasi)に載せる限り、Wasmに別の運用は要りません。足りないのはzwasm側の実装です。つなぎ目ごとに、載せる側が何を確かめればいいかをお持ち帰りいただきます。

Speaker

Junji Takakura

株式会社ヌーラボ

Platform Engineer

ソフトウェアエンジニアとして20年超のキャリアを積み、2024年にPlatform Engineerへ転向。
現在はNulabのPlatform Engineering Teamに所属し、開発者がKubernetes上へ迷わずデリバリできる標準経路(Golden Path)を設計しながら、JenkinsからArgoCDへの段階移行を進めている。
業務外ではZig製WebAssemblyランタイムzwasmの共同メンテナとしてRust SDKとrunwasi対応を担当。OpenTelemetryのZig実装にもコントリビュートしている。