ついにKubernetesからDockershimが正式に削除、Docker Engineのサポートが終了。今年最初のKuberenetes 1.24正式版がリリース

オープンソースとして開発されているコンテナオーケストレーションツール「Kubernetes」の開発チームは、Kubernetes 1.24正式版のリリースを発表しました。今年最初のKubernetesのリリースとなります。

Kubernetes 1.24の最大の変更点は、「Dockershim」が正式に削除されたことでしょう。Dockershimは2020年12月にリリースされたKubernetes 1.20から非推奨となっており、そこから約1年半が経過した本バージョンのリリースで正式に削除となりました。

参考:Dockershimを非推奨とした「Kubernetes 1.20」が正式リリース。Graceful node Shutdown機能がアルファ版で登場など

今後さまざまなKubernetes関連の実装やサービスでKubernetes 1.24へのアップデートが行われると見込まれます。Dockershimが非推奨になってから十分な時間が経過しているため多くのユーザーはすでにcontainerdやcri-oなどDocker Engine以外のコンテナランタイムに移行したと思われますが、もしもまだKubernetesでDocker Engineを使っている場合には、早急な見直しが必要でしょう。

Dockershimが削除されるまでの経緯

DockershimはKubernetesでコンテナランタイムとしてDocker Engineを利用するためのブリッジの役割をしていたインターフェイスでした。

もともとKubernetesはコンテナランタイムとしてDocker Engineをサポートしていました。というのも、Kubernetesが登場したときにはコンテナランタイムは事実上Docker Engineしか選択肢がなかったためです。

しかしその後、CoreOSのrktを始めとするDocker Engine以外のコンテナランタイムが登場したことで、Kubernetesは複数のコンテナランタイムをサポートするべく、コンテナランタイムとのインターフェイスとして「Container Runtime Interface」(CRI)というAPIを新たに定義します。

このCRIをサポートするコンテナランタイムであれば、Kubernetes上で利用できることになるのですが、Docker EngineはCRI以前から存在していたこともあり、CRIをサポートしていませんでした。

そこでKubernetesはCRIとDocker EngineのブリッジとしてDockershimを同梱し、CRI策定後も継続してDocker Engineをコンテナランタイムとしてサポートしてきました。

しかしすでにcontainerd、cri-o、gVisor、Firecrackerなど、CRIに対応したさまざまなコンテナランタイムの選択肢が登場したことで、KuberntesとしてはDockershimの役割を終えるタイミングが来たと判断したわけです。