「KubernetesではDockerのサポートが廃止されます。このことに注意し、計画を立てる必要があります。これによりクラスターが壊れるでしょう」とCNCFアンバサダーのイアン・コールドウォーター氏はTwitterで述べた。
これは開発者の間で動揺を引き起こしましたが、注意する必要があるのは管理者です。Kubernetes は引き続き Docker コンテナを実行します。
Coldwater氏のツイートは注目を集める意図があったようで、実際その通りになりました。Dockerコンテナはあらゆる場所に存在し、現代のアプリケーション開発とデプロイメントに組み込まれています。一体何が起こっているのでしょうか?
問題は、「Docker」が文脈によって異なる意味を持つことです。近日リリース予定のKubernetes 1.20のリリースノートには次のように記載されています。
CRIはContainer Runtime Interfaceの略で、コンテナの起動と停止などを行うランタイムAPIです。Dockerはコンテナランタイムですが、CRIを実装していないため、リリースノートに記載されているshimが必要になります。containerdやCRI-Oなどの代替ランタイムを使用することをお勧めします。Docker自体はcontainerdを使用しており、開発には便利ですが、Kubernetesでは通常必要とされない追加機能がラップされています。
「開発者は引き続きDockerを使ってイメージを構築できます。この点に変更はありません」とDockerの広報担当者は述べています。「Kubernetesはイメージの実行にcontainerdを使用するため、これは主にDocker Engineをランタイムとして使用している運用担当者/管理者に影響します。運用担当者/管理者は、Kubernetesクラスターのコンテナランタイムとしてcontainerdを使用するよう移行する必要があります。Docker Engineは、開発者がKubernetesで実際に必要としないUXなどの追加機能を備えたcontainerdです。この合理化は朗報です。containerdはDockerとKubernetesの両方のコアとなるからです。」
Kubernetes 1.20は引き続きDockerをサポートしていることにもご留意ください。この件に関する速攻FAQには、「1.20での変更点は、Dockerをランタイムとして使用している場合、kubeletの起動時に警告ログが1つ出力されることのみです」と記載されています。開発チームによると、dockershimなしのリリースは「2021年後半にリリースされる1.23になる予定です」とのことです。
Dockerはついにプルレート制限を施行したが、影響を受けるのはわずか1.5%のユーザーと見積もっている。
続きを読む
とはいえ、Dockerから別のランタイムに変更する際には、いくつか問題があります。上記のFAQには、ログ設定、ノードプロビジョニングスクリプト、Dockerを必要とする可能性のあるKubectl(Kubernetes用コマンドラインツール)プラグイン、GPUやその他の特殊なハードウェアとの統合など、問題のリストが掲載されています。
FAQには記載されていませんが、Windowsコンテナにも問題があります。Kubernetes 1.18までは、こちらの投稿で説明されているように、Dockerは「Windowsでサポートされている唯一のコンテナランタイム」でした。1.18ではcontainerdのサポートが追加されましたが、まだアルファ版であるため、本番環境での使用は想定されていません。現時点では、「Docker EE-basic 19.03以降が、すべてのWindows Serverバージョンで推奨されるコンテナランタイムです。これはkubeletに含まれるdockershimコードで動作します」とドキュメントに記載されていますが、「ContainerD 1.4.0-beta.2以降もWindows Kubernetesノードのコンテナランタイムとして使用できます」とも記載されています。ContainerDのWindowsサポートは、Kubernetes 1.20以降を「安定リリースターゲット」としています。Windowsコンテナを使用しているユーザーへのメッセージは、切り替えを急がないようにということです。
「このdocker/docker-shimの廃止が、これほど大きな混乱を引き起こしたことは驚きです」と、Kubernetesの共同創設者であるVMwareのジョー・ベダ氏は述べた。一方、Coldwaterは次のように振り返った。「今朝、パニックを引き起こしてしまい申し訳ありません。Dockerサポートの廃止について事前に注意喚起し、皆さんが計画を立てられるようにしたかったのです。一部の人にとっては、これは大きな変更であり、修正には時間がかかるからです。ええと、うまくいったでしょうか?しかし、同時に人々にストレスを与えてしまいました。」®