CNDO 2021、サイバーエージェントのテックリードがコンテナランタイムの最新情報を解説

CloudNative Days Spring 2021からKubernetesのコンテナランタイムを解説したセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2021年5月19日 7:31

CloudNative Days Spring 2021からKubernetesのPodの実行基盤となるコンテナランタイムの詳細と最新情報を解説するセッションを紹介する。このセッションは、サイバーエージェントのインフラストラクチャーを構築運用するインフラチームのテクニカルリード、長谷川誠氏によるものだ。

長谷川氏はこれまでにも、OpenStack Summitや国内のIT関連カンファレンスにも登壇しているベテランのスピーカーだ。2018年のJapan Container Daysでもコンテナランタイムのセッションに登壇し、2020年のCloudNative Days Tokyoでは、GitOpsのためのツールの比較を行うセッションを担当した。

参考:
CNDT2020シリーズ:オススメのGitOpsツールをCAのインフラエンジニアが解説
runC vs. cc-runtime vs. kata-runtime?コンテナランタイムの内部構造と性能比較

Kubernetesにおけるランタイムを解説する長谷川氏

Kubernetesにおけるランタイムを解説する長谷川氏

クラウドネイティブなシステムの第一歩がコンテナの利用であることは、CNCFのトレイルマップにおいて紹介されていることからもわかる。興味深いのは、CNCFのプロジェクトとしてContainerdやCRI-Oなどがホストされているにも関わらず、このイラストの中にはこれらが登場してこない点だろう。

Dockerから始まったコンテナ化は、Docker以外にもRed HatがプッシュするCRI-OやIntelがコードを提供したマイクロVMのランタイムであるKata Container、Googleが開発したgVisor、AWSが開発したKVMベースのマイクロVMのFirecrackerなど、さまざまなランタイムが並び立つレッドオーシャンだ。しかしセキュリティの強化などそれぞれに適した用途や特徴を備えており、デベロッパーに選択の可能性を提供しているとも言える。

CNCFのクラウドネイティブなシステムを構築するための順序を示したトレイルマップ

長谷川氏のセッションは、多数存在するランタイムから特にKubernetesの中で利用する際の基礎知識や設定方法などを解説するものとなった。

今回のトピックの中心となるRuntime Classを解説

今回のトピックの中心となるRuntime Classを解説

ここではランタイムに高レベルランタイム、低レベルランタイムが存在することを解説し、CRIランタイムが高レベル、OCIランタイムが低レベルという位置付けになることを説明した。

OCI(Open Container Initiative)はThe Linux Foundation配下の組織であり、そこで策定されたランタイムの仕様となる。OCIはランタイムの仕様だけではなくコンテナイメージに関する仕様も策定しており、ランタイムとイメージに関する業界標準を作ろうとしていると言える。

一方CRIはContainer Runtime Interfaceの略で、コンテナを起動するKubeletとコンテナ間の通信インターフェイスを規定するものだ。

KubeletからCRIを通じてOCIランタイムが起動される仕組み

KubeletからCRIを通じてOCIランタイムが起動される仕組み

このようにKubernetesからコンテナが起動されるメカニズムをManifestoの記述に合わせて解説できるのは、自社の中でKubernetes-as-a-Serviceを立ち上げているサイバーエージェントならではと言えるだろう。

高レベルランタイム

CRI-OはKubernetesに特化した軽量ランタイム

CRI-OはKubernetesに特化した軽量ランタイム

複数存在する高レベルのコンテナランタイムの中から、ContainerdとCRI-Oについてそれぞれの特徴を解説した。ContainerdはDockerの内部で使われていたソフトウェアがCNCFに寄贈されてプロジェクトとして採用され、2019年にGraduationとなった成熟したソフトウェアだ。もう一方のCRI-OはRed Hatが強力にプッシュするランタイムで、Red Hatが提供するKubernetesディストリビューションであるOpenShiftで使われているソフトウェアとしても知られている。

DockerはCRIに対応していないことを解説

DockerはCRIに対応していないことを解説

またコンテナの代表的なソフトウェアであるDockerはCRIランタイムではないことを説明し、Runtime Classでの定義を使えないとしながらも、Dockerを利用する裏技も紹介した。

また2019年にDocker社からDocker Enterprise事業を買収したMirantisが、cri-dokcerdという新しいプロジェクトを始めたことを解説した。これはKubernetes 1.20以降でDockerSimが廃止されることを受けて、Dockerのエコシステムに慣れているユーザーを救済するための施策だろう。

低レベルランタイム

OCIランタイムの紹介

OCIランタイムの紹介

ここからは低レベルのランタイムとしてrunc、Kata Container、gVisorの3点を紹介した。runcはほぼデファクトスタンダードとして、意識していないデベロッパーも使っているランタイムと説明した。一方Kata ContainerとgVisorはそれぞれマイクロVMベース、システムコールをフックする仕組みを備えているセキュアなランタイムであることを説明した。

OCIランタイムを選択可能にすることがRuntime Classの仕事

OCIランタイムを選択可能にすることがRuntime Classの仕事

そしてOCIランタイムを設定するためのポイントを3つ挙げて解説。ここからは実際にKubernetesのManifestoの例を見せて解説するフェーズとなった。

OCIランタイムを設定する方法を解説

OCIランタイムを設定する方法を解説

Admission ControllerでRuntime Classを有効にすること、ManifestoでRuntime Classを定義すること、CRIランタイムの設定ファイルで設定するという内容を、例を挙げて解説した。

KubernetesのYAMLファイルで設定

KubernetesのYAMLファイルで設定

今回の例ではContainerd、CRI-Oのそれぞれにおける設定を解説した。

CRI-O側での設定を解説

CRI-O側での設定を解説

またDockerからOCIランタイムを変更する方法についても解説を行い、ここではDockerのエコシステムに慣れているユーザーに向けての裏技を紹介した形になった。新しくコンテナを始めるユーザーにとってDockerはエントリーポイントとしては良いのかもしれないが、その先にKubernetesによるプラットフォームを意識しているのであれば、なるべくKubernetesの仕様に即したコンポーネントを選択するのがベストだ。しかしすでにDockerに慣れている開発者がスムーズに移行するためのルートが用意されていることを紹介したのは、長谷川氏の良識によるものだろう。

まとめ。「1.20でGAになったRuntime Classを使っていこう」と訴求

まとめ。「1.20でGAになったRuntime Classを使っていこう」と訴求

過去のセッションではOCIランタイムの性能比較を発表したこともある長谷川氏だが、ここでは敢えて「これからランタイムを意識し始めたデベロッパー、インフラエンジニアに向けた内容」にまとめたという印象のセッションとなった。Kubernetesのランタイムが気になるエンジニアには、良いイントロダクションとなったのではないだろうか。

人気記事トップ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