コンテナランタイム「containerd 2.0」正式リリース、登場以来初のメジャーバージョンアップ。1.xとの互換性は維持
今回は「コンテナランタイム「containerd 2.0」正式リリース、登場以来初のメジャーバージョンアップ。1.xとの互換性は維持」についてご紹介します。
関連ワード (一部、参考、重点等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
コンテナランタイムの代表的な実装の1つである「containerd」の初のメジャーバージョンアップとなる「containerd 2.0」正式版がリリースされました。
containerdはDockerが登場したときにその一部として実装され、2016年に独立したオープンソースプロジェクトとなり、2017年3月にCloud Native Computing Foundationに寄贈された後、7月にバージョン1.0に到達しています。
2018年にリリースされたcontainerd 1.1では、Kubernetesの標準APIであるContainer Runtime Interface (CRI)に対応するなど、現在でも主要なコンテナランタイムとして使われています。
containerdは、いわゆる高レベルコンテナランタイムとして外部とのインターフェイスやコンテナイメージを管理する役割などを備えています。実際にコンテナを実行する低レベルランタイムには「runC」を採用しています。
参考:コンテナランタイムの仕組みと、Firecracker、gVisor、Unikernelが注目されている理由。 Container Runtime Meetup #2
containerd 2.0の新機能など
containerd 2.0の特徴は、リリースページの説明文に簡潔にまとめられているので引用します。
The first major release of containerd 2.x focuses on the continued stability of containerd’s core feature set with an easy upgrade from containerd 1.x. This release includes the stabilization of new features added in the last 1.x release as well as the removal of features which were deprecated in 1.x. The goal is to support the vast community of containerd users well into the future along with their ever increasing deployment foot prints and variety of use cases.
最初のメジャーリリースとなるcontainerd 2.xは、containerd 1.xからの容易なアップグレードとともに、containerdのコア機能群の安定性を継続することに重点を置いています。 このリリースには、前回の1.xリリースで追加された新機能の安定化と、1.xで非推奨となった機能の削除が含まれています。その目的は、増え続けるデプロイメントのフットプリントと多様なユースケースとともに将来にわたってサポートすることです。
このようにcontainerd 2.0はcontanerd 1.0との互換性と安定性に重点が置かれているのだと説明されています。その上で、いくつかの新機能なども追加されているので、主なものを紹介しましょう。
Sandboxサービスが安定版に
これまでコンテナ管理を抽象化する場合にはshimを用いていました。例えばWebAssemblyに対応する場合にはWebAssemblyをコンテナのように見せる「containerd-wasm-shim」などによる抽象化が行われていましたが、Sandboxサービスによってコンテナを抽象化する機能が組み込まれたことで、抽象的なコンテナ管理がより柔軟にできるようになりました。
Sandboxed CRIがデフォルトに
containerdのCRIプラグインは、前述のようにSandboxサービスが安定版になったことに伴い、Snadboxed CRIがデフォルトとなりました。
NRI(Node Resource Interface)がデフォルトで有効に
NRI(Node Resource Interface)はKubernetes上のコンテナに対してスケジューリング、CPUやメモリなどのパラメータの参照や変更を行うインターフェイスを提供します。containerd 2.0からデフォルトで有効になります。
CDI(Container Device Interface)がデフォルトで有効に
コンテナからGPUなどのデバイスへのアクセスを抽象化するCDI(Container Device Interface)がcontainerd 2.0でデフォルトで有効になり、GPUなどのデバイスサポートを容易にします。