wasm(WebAssembly)をKubernetesのPodとして実行可能とするKrustletを自宅のKubernetesクラスタに導入してみました。Dockerコンテナ上で、wasmランタイムを動かすのではなく、Krustletに含まれるwasmランタイムで実行されるようで、ノード上でwasmだけ動かすのであれば、kubeletやdockerのインストールは不要で、Krustletだけ起動しておけばよいようです。
Krustletの導入はこちらの記事を参考に行いました。最初はCentos7で試したのですが、glibcやopenssl関係のライブラリのバージョンが古くて動作しなかったため、Ubuntu20.04を入れなおして、再度試したところ、サンプルのhello-worldのwasmがPodとして動作するようになりました。ちなみに以下のようなコマンドで起動しました(bootstrap.confは上の記事で触れられているbootstrap.shで作成。事前にkubectlをインストールしておく必要あり)。
./krustlet-wasi --bootstrap-file /home/username/.krustlet/config/bootstrap.conf --node-ip 192.168.0.45
Krustletは現時点ではKubernetesのネットワーク機能(CNI)に対応していませんが、検討はされているみたいです。また、ストレージ機能(CSI)には部分的に対応していそうです(ドライバ等の導入が必要みたいですが)。あと、ConfigMapをボリュームマウントすればファイルとしてアクセスすることもできるようです(こちらのサンプルはConfigMapを使用しています)ので、ConfigMapを介してデータをwasmに受け渡すことはできそうです。