CloudNative Days Fukuoka 2023イベントレポート 6

CloudNative Days Fukuoka 2023、コンテナランタイムの今と未来を解説するキーノートセッションを紹介

CloudNative Days Fukuoka 2023から、containerdやyoukiのコントリビュータがコンテナランタイムの現在と未来を解説するキーノートセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2023年11月20日 6:30

2023年8月3日のCloudNative Days Fukuoka 2023キーノートから、Toru Komatsu氏によるコンテナランタイムに関するセッションを紹介する。Komatsu氏は、containerdやRust製のコンテナランタイムであるyoukiのコントリビュータとして知られている。

●動画:クラウドネイティブの基盤要素、コンテナの今と未来

セッションを行うToru Komatsu氏

セッションを行うToru Komatsu氏

タイトルは「クラウドネイティブの基盤要素、コンテナの今と未来」でキーノートセッションとして行われた。コンテナランタイムの詳細な構成やハイレベルランタイム、ローレベルランタイムなどについても解説し、後半ではWebAssemblyの利用、コンテナ起動を高速にするLazy Pulling、OCI Runtime Specificationなどの最新情報を解説した。

最初に解説したのはKubernetesにおけるKubeletからランタイムを経てLinuxプロセスとしてコンテナが実行されるまでのコンポーネント、そしてその仕様についてだ。

Kubernetesに置けるコンテナが起動されるまでのコンポーネントを解説

Kubernetesに置けるコンテナが起動されるまでのコンポーネントを解説

そしてハイレベルランタイムであるcontainerdについて、マイクロサービス的なアーキテクチャーになっていること、プラグインの仕組みが用意されていることなどを解説。

containerdの内部構成

containerdの内部構成

ここで解説されたcontainerdのプラグインを持つという特徴は後半の未来のパートで引用されており、その仕組みを通じて次の話題であるWebAssemblyに繋がる内容となっている。

コンテナランタイムの今を解説。特にcontainerdのプラグインの仕組みがポイント

コンテナランタイムの今を解説。特にcontainerdのプラグインの仕組みがポイント

後半の未来のパートではKubeConやWasmConなどでも大きな話題となっているWebAssemblyについての解説から始まった。

サーバーサイドのWebAssemblyについてSolomon Hykesのコメントを紹介

サーバーサイドのWebAssemblyについてSolomon Hykesのコメントを紹介

実際にコンテナランタイムのアーキテクチャーにWebAssemblyを当てはめて説明を行い、その機能がどのようにマップされるのかを解説。ここでは最もハードウェアに近いレベルでWebAssemblyのコードが実行されることを示している。

コンテナランタイムの文脈でWebAssemblyを説明

コンテナランタイムの文脈でWebAssemblyを説明

そのためにcontainerdのサブプロジェクトとしてrunwasiというソフトウェアが開発され、現時点でDocker DesktopやAzure Kubernetes Serviceなどから利用可能であると説明した。

またコンテナの資産をそのまま変換してWebAssemblyとして実行するためのcontaier2wasmを紹介。これはNTTの徳永航平氏が開発を行っているオープンソースソフトウェアだ。

徳永氏に関しては基礎的なコンテナランタイムに関する記事があるのでそちらも参考にして欲しい。

●参考:CNDO 2021、Kubernetesとコンテナの基本的構造をNTTの徳永航平氏が解説

また須田瑛大氏が開発するコンテナイメージを遅延してプルするLazy Pullingについても解説を行った。偶然だが、須田氏も徳永氏と同じくNTTの所属である。

コンテナのレイヤーを遅延してロードすることで起動を高速にするLazy Pulling

コンテナのレイヤーを遅延してロードすることで起動を高速にするLazy Pulling

このスライドではPythonのコンテナがLazy Pullingだと起動に11秒、コンテナサイズが4.8KBなのに比べて従来のコンテナでは起動に41秒、サイズが321MBという違いが出ることを解説した。この仕組みについて踏み込んで解説したスライドで記載されているstargz-snapshotterが徳永氏、須田氏が開発するモジュールになる。

またハイレベルランタイムとローレベルランタイムをつなぐ仕様となるOCI Runtime Specificationについても約3年ぶりにv1.0.2からv1.1.0になったことを説明。

OCI Runtime Specificationがv1.1.0になった

OCI Runtime Specificationがv1.1.0になった

新しいバージョンに含まれる21個の新機能の中からコンテナ実行の優先度を変更するプルリクエストを紹介。ここでKomatsu氏はコンテナがLinuxの1プロセスであることを意識したとコメントした。

コンテナ実行にnice値を設定するプルリクエスト

コンテナ実行にnice値を設定するプルリクエスト

そしてKomatsu氏自身が作成したプルリクエストであるコンテナの入出力処理における優先度を設定する新機能についても簡単に触れ、同じようにコンテナのランタイムについて「こうしたい」「こういう機能が必要だ」というユーザー側の声が聞きたいと説明し、現場での要望を聞かせてくださいとデベロッパーへのコミュニケーションを歓迎することを強調した。

入出力処理に優先度を設定する新機能を紹介

入出力処理に優先度を設定する新機能を紹介

最後にLazy Pullingについて参考となる解説を行ったNTTの徳永氏に対して謝意を述べてセッションを終えた。

NTTの徳永氏によるLazy Pullingの解説に感謝

NTTの徳永氏によるLazy Pullingの解説に感謝

コンテナランタイムは数年前にはホットなトピックだったが、WebAssemblyが注目され、既存のコンテナとの共存や移行などが話題になるにつれて再度注目されている分野なのかもしれない。より上位レイヤーのデベロッパーにとっては詳細過ぎる話題かもしれないが、コンテナサイズを削減できるLazy Pullingは日本のコントリビュータが活躍しているエリアでもあり注目して欲しい。以下は2020年のKubeConに関する記事だが、CERNも注目していた徳永氏のstargz-snapshotterに関する解説記事である。参考にして欲しい。

●参考:Lazy pullの解説:KubeCon NA 2020 CERNの巨大な分析ジョブをコンテナ化する際の高速化から見るOSSの有機的な繋がり

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る