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

KubeCon NA 2020で発表された、CERNによるコンテナ起動の高速化に関するセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2021年3月16日 7:27

KubeCon+CloudNativeCon NA 2020のセッションの中から、今回はCERNが発表した、分析のためのアプリケーションをコンテナ化する際にコンテナ生成時間を短縮した事例を紹介する。CERNと言えば世界最大の素粒子物理学の研究機関として有名だが、一方でITの世界ではOpenStackの巨大なユーザー事例としても知られている。そんなCERNが行った今回のセッションのタイトルは「Speeding Up Analysis Pipelines with Remote Container Images」である。

この事例のベースになった技術は、複数の組織、コミュニティ、プロジェクトが開発するオープンソースソフトウェアや研究をベースにしている。一例を挙げると、CNCFから卒業したコンテナランタイムのcontainerd、Googleが開発した圧縮フォーマットのstargz/eStargz、それを応用してコンテナのイメージ生成時間を短縮することを研究したNTTのエンジニア、その研究結果を応用してCERNのシステムに実装したエンジニアとなる。オープンソースを通じた複数の組織、エンジニアのコラボレーションの成果が、有機的に繋がることを実感できる内容となった。

KubeConのセッション:Speeding Up Analysis Pipelines with Remote Container Images - Ricardo Rocha & Spyridon Trigazis, CERN

セッションの動画:Speeding Up Analysis Pipelines with Remote Container Images - Ricardo Rocha & Spyridon Trigazis

このセッションはCERNで利用されている分析のためのワークロードを、仮想マシンの上で実装するのではなくコンテナイメージとして実装する際に、コンテナイメージ生成のためのライブラリーなどの外部モジュールをダウンロードする場合の処理時間を短縮する方法を解説するものだ。

CERNのエンジニアが解説するコンテナイメージに関するセッション

CERNのエンジニアが解説するコンテナイメージに関するセッション

この内容を理解するためには、まず以下の動画とスライドを参照されたい。ここではNTTの徳永航平氏がlazypullという方法でコンテナイメージのためのダウンロード時間を短縮する方法を解説している。

動画:Stargz Snapshotter: イメージのpullを省略してcontainerdでコンテナを高速に起動する

スライド:Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する

Stargz Snapshotterでイメージ起動を高速化する手法

Stargz Snapshotterでイメージ起動を高速化する手法

これは多くのライブラリーなどに依存するコードをコンテナにまとめる際に、処理時間の多くがPullに費やされており、この状態を打破するためにlazypullを使うという手法を紹介するものだ。

コンテナイメージの処理時間は多くの場合、コードのPullに費やされている

コンテナイメージの処理時間は多くの場合、コードのPullに費やされている

徳永氏が解説しているのは、コンテナランタイムであるcontainerdのプラグインとして開発されているStargz Snapshotterだ。

Stargz Snapshotterの概要

Stargz Snapshotterの概要

通常であれば、コンテナのビルド~実行の際に、コンテナの仕様書であるManifestをダウンロード、その中で記述されているライブラリーなどをレイヤーとしてダウンロードという順番になる。ここですべてのレイヤーを毎回ダウンロード(Pull)することで処理時間が長くなるという状況を解決するためにlazypull、つまり怠け者(lazy)的にPullするやり方を、containerdのプラグインとして実装したというのがポイントだ。

通常のコンテナイメージの作られ方

通常のコンテナイメージの作られ方

Stargz Snapshotterは、コンテナのビルド時ではなく実行時に必要に応じてPullを行うことになる。そのためすべてのイメージを毎回ダウンロードする必要がなくなり、処理時間が大幅に短縮されることになる。

Stargz Snapshotterの仕組み

Stargz Snapshotterの仕組み

その際に圧縮のフォーマットとしてtarではなくstargzを使う。これはGoogleがコンテナレジストリーのファイルシステムであるcrfsを開発する中で提案され、実装されたフォーマットだ。

stargzの解説

stargzの解説

結果としてコンテナ起動に必要な時間が短縮されていることが確認できる。

Stargz Snapshotterによる高速化のベンチマーク

Stargz Snapshotterによる高速化のベンチマーク

このグラフの「legacy」は従来のすべてをダウンロードするやり方であり、「estargz」はstargzを最適化したフォーマットだ。stargz、estargzのどちらのフォーマットも、legacyと比較して大幅に高速化されていることがわかる。最後にまとめとしてstargz/estargzを使うStargz Snapshotterでコンテナイメージの起動が高速化することが解説されている。

徳永氏はスライドの最後のページで「使えそうなユースケースがあったら教えてください」と呼びかけているが、CERNのユースケースはまさにそれに当てはまるものというわけだ。

CERNが利用するソフトウェア配信のためのファイルシステム、CernVM-FSの紹介

CERNが利用するソフトウェア配信のためのファイルシステム、CernVM-FSの紹介

ここで紹介されているCernVM-FSは、CERNと関連する研究機関がアプリケーションのイメージを共有するために作られたものだ。コンテナがそのパッケージのためのフォーマットとして利用されるに従って、コンテナイメージの起動時間やそれに必要とされるネットワークトラフィックが問題として浮かんできたという背景を紹介している。

CERNにおけるソフトウェア配信の問題点

CERNにおけるソフトウェア配信の問題点

そして、その解決策がlazypullだったというのがこのセッション前半の要点だ。

lazypullでコンテナイメージの起動時間を短縮

lazypullでコンテナイメージの起動時間を短縮

その具体的なツールとして挙げられたのが、NTTの徳永氏が紹介したcontainerdのプラグイン、Stargz Snapshotterだ。

CERNが使うStargz Remote Snapshotter

CERNが使うStargz Remote Snapshotter

コンテナイメージの圧縮フォーマットとしてstargzを使うことで、tarball(tarコマンドでまとめられたアーカイブファイル)の中に何が収められているのかを素早く検知し、実際にダウンロードせずに実行時まで遅延させることで高速化するのが、Stargz Snapshotterだ。

解説には徳永氏が利用した図版が使われていることがわかる

解説には徳永氏が利用した図版が使われていることがわかる

CERNで実際に測定されたベンチマークも紹介された。ここでは特にPulling time、Pullにかかった時間に注目しよう。ネイティブの場合の3分37秒に対して、16秒と大幅に高速化されていることがわかる。

CERNによるベンチマークテスト

CERNによるベンチマークテスト

CERNとしては、この結果に満足しているというところだろう。CERNが利用しているGitLabのリポジトリーでは、HTTPによってアクセスする際のRangeというクエリーがサポートされていないなどの問題点も挙げられているが、おおむね高速化、ネットワークトラフィックの低減、オーバーヘッドの少なさなどが利点として挙げられている。

CERNにおける現状の評価

CERNにおける現状の評価

また今後の改善点としてマルチコアの利用、KubernetesのレジストリーであるHarborでの対応などが挙げられている。

最後にNTTの徳永航平氏や、ルート権限を持たないコンテナであるRootless Containersのコントリビュータである同じくNTTの須田瑛大氏などへの謝意を表して、セッションを終えた。

このセッションでは「いかにコンテナの起動時間を短縮するのか?」という命題について、Googleのstargz/eStargz、containerd、Stargz Snapshotterといった複数のプロジェクトを連携させることで、CERNの求めるシステムを実装できたことが紹介された。組織の枠を超えて、コミュニティが機能していることがわかる良い実例と言える。コミュニティへの貢献が他のコミュニティに繋がることで、最終的に全体が良くなるというオープンソースプロジェクトのベストシナリオを、CERNが示してくれた形と言えるだろう。

コンテナイメージ生成時にレイヤーのイメージをすべてダウンロードするのではなく、lazypullによってダウンロード時間を短縮する技法については、KubeCon+CloudNativeCon EU 2020のセッションでNTTの徳永氏が使用した資料も参考になるだろう。

KubeCon EUのスライド(PDF):Startup Containers in Lightning Speed with Lazy Image Distribution

また徳永氏のブログでも詳細に紹介されている。

徳永氏のブログ:Startup Containers in Lightning Speed with Lazy Image Distribution on Containerd

またCERNのファイルシステムCernVM-FSについては、以下を参照されたい。

参照(PDF):Software Distribution with CernVM-FS

この記事のキーワード :

人気記事トップ10

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

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30