画像はPexelsより しかし、2020 年 12 月に、Kubernetes コミュニティはリポジトリ内の Dockershim 関連コードを削除することを決定しました。これは、Kubernetes コミュニティと Docker コミュニティの両方にとって大きな意味を持ちます。 図1: Dockershim ほとんどの開発者は Kubernetes と Docker について聞いたことがあり、Kubernetes を使用して Docker コンテナを管理できることも知っていると思いますが、Dockershim または Docker shim については聞いたことがないかもしれません。 上の図に示すように、Kubernetes のノード エージェント Kubelet は、Docker が提供するサービスにアクセスするために、コミュニティによって管理されている Dockershim を経由する必要があります。 Dockershim は、コンテナを管理する Docker サービスにリクエストを転送します。 実際、上記のアーキテクチャ図から、Kubernetes コミュニティがコード リポジトリから Dockershim を削除した理由を推測できます。
スケーラビリティKubernetes は、特定のランタイム実装に依存しない新しいコンテナ ランタイム インターフェイスを導入することで、コンテナ管理を特定のランタイムから分離します。 初期の段階では、多くのオープンソース プロジェクトは、ユーザーのコスト削減のために、すぐに使用できるエクスペリエンスを提供しています。ユーザーベースが拡大するにつれて、より多くのカスタマイズされたニーズを満たし、より高いスケーラビリティを提供するために、より多くのインターフェースが導入されることになります。 Kubernetes は、次の一連のインターフェースを通じてさまざまなモジュールの拡張性を提供します。 図 2: Kubernetes インターフェースと拡張性 Kubernetes は以前のバージョンで CRD、CNI、CRI、CSI などのインターフェースを導入しました。スケジューラを拡張するためのスケジューリング フレームワークだけが、Kubernetes の比較的新しい機能です。 ここでは他のインターフェースや拡張機能については分析しませんが、コンテナ ランタイム インターフェースについて簡単に紹介します。 Kubernetes 1.3 の時点では、コード リポジトリで rkt ランタイムと Docker ランタイムの両方がサポートされていました。 ただし、これらのコードは Kubelet コンポーネントのメンテナンスに大きな困難をもたらします。異なるランタイムを維持する必要があるだけでなく、新しいランタイムに接続することも困難です。 Container Runtime Interface (CRI) は、Kubernetes 1.5 で導入された新しいインターフェースです。 Kubelet は、この新しいインターフェースを通じてさまざまなコンテナ ランタイムを使用できます。 実際、CRI のリリースは、Kubernetes がリポジトリから Dockershim コードを確実に削除することを意味します。 CRI は、コンテナのランタイムとイメージを管理するための一連の gRPC インターフェースです。その定義には、RuntimeService と ImageService という 2 つのサービスがあります。 名前を見れば、その役割はほぼわかります。
Kubernetes について少し知識のある人なら、上記の定義からいくつかの馴染みのあるメソッドを見つけることができます。これらはすべて、コンテナの実行時に Kubelet に公開する必要があるインターフェースです。 Kubernetes は、Kubelet 内のクライアントと通信するための gRPC サーバーとして CRI shim を実装し、すべてのリクエストは処理のためにコンテナ ランタイムに転送されます。 図3: KubernetesとCRI 宣言型インターフェースは Kubernetes で非常に一般的です。宣言型インターフェースの支持者として、CRI が宣言型インターフェースを使用しないというのは「非常に奇妙」に思えます。 ただし、Kubernetes コミュニティは、コンテナ ランタイムが Pod リソースを再利用できるようにすることを検討しています。これにより、コンテナ ランタイムはコンテナを管理するためのさまざまな制御ロジックを実装できるようになり、Kubelet とコンテナ ランタイム間のインターフェースが大幅に簡素化されます。 ただし、コミュニティは次の 2 つの考慮事項により、宣言型インターフェースを選択しませんでした。
コミュニティは最終的に CRI に命令型インターフェースを選択しましたが、Kubelet は Pod の状態が目的の状態に移行し続けることを保証します。 互換性のないインターフェースコンテナ ランタイムと比較すると、Docker は、ビルドから実行までの完全な機能セットを提供する複雑な開発ツールに似ています。 開発者は Docker をすぐに使い始め、いくつかの Docker コンテナをローカルで実行および管理できます。ただし、クラスターで実行されるコンテナ ランタイムでは、このような複雑な機能が必要になることはあまりありません。 Kubernetes には、CRI で定義されたインターフェースのみが必要です。 図4: DockerとCRI Docker の公式ドキュメントは、本と同じくらいの厚さになる場合があります。 Docker が提供するすべての機能を巧みに使いこなせる開発者はいないと思います。 開発者ツールとして、Docker には CRI に必要なすべての機能が含まれていますが、CRI と互換性を持たせるにはパッケージングのレイヤーを実装する必要があります。 さらに、cgroups v2 やユーザー名前空間など、コミュニティによって提案された多くの新機能は Dockershim では実装できません。 Kubernetes は比較的緩やかなオープンソース コミュニティであり、各メンバー、特に各 SIG のメンバーは、オープンソース コミュニティに限られた時間しか費やしません。 Kubelet の sig-node のメンテナンスは特に忙しく、メンテナーに十分なエネルギーがないため、多くの新機能が棚上げされています。 したがって、Docker コミュニティは Kubernetes の CRI インターフェースをサポートするつもりはないようであり、Dockershim の維持には多大な労力が必要であるため、Kubernetes が Dockershim を削除する理由は理解できます。 要約する現在、Kubernetes はすでに非常に成熟したプロジェクトであり、さまざまなシナリオや企業のカスタマイズされたビジネス ニーズを満たすために、その重点は、より完全な機能の提供からより優れたスケーラビリティの提供へと徐々に移行しています。 かつて Kubernetes は人気のため Docker を選択しましたが、現在ではメンテナンスコストが高いため Docker を放棄しています。このプロセスからコンテナ分野の発展と進歩を体感することができます。 Docker を削除するというアイデアは、実は CRI がリリースされたときに生まれました。 Dockershim は、市場で Docker との互換性を確保するために Kubernetes が下した一時的な決定でした。 現在市場を席巻しているKubernetesにとって、Dockerのサポートは非常に役に立たないと思われるため、コードを削除するのは当然のことです。 Kubernetes がリポジトリから Docker サポートを削除した 2 つの理由を確認しましょう。 Kubernetes は、特定のコンテナ ランタイムへの依存をなくし、基盤となる実装の詳細の多くを隠蔽して、Kubernetes がコンテナ オーケストレーションにさらに集中できるようにするために、初期バージョンで CRI を導入しました。 Docker自体はCRIインターフェースと互換性がなく、公式にはCRIを実装する予定はありません。また、コンテナに対するいくつかの新しい要件もサポートされていないため、Dockershim のメンテナンスはコミュニティが取り除きたい負担となっています。 最後に、関連するいくつかの未解決の質問を見てみましょう。興味のある読者は、次の質問について慎重に考えてみてください。 Kubernetes の他のモジュールには優れた拡張性を提供するものはありますか? この記事で言及されている CRI-O と Containerd に加えて、他にどのようなコンテナ ランタイムが CRI をサポートしていますか? 著者: Draveness 編集者:タオ・ジアロン 出典: 公開アカウントから転載「本当に論理がない」(ID: draveness) |
<<: Teams: 接続性、相互通信、コラボレーションが新しいハイブリッド オフィス モデルをリード
>>: Yarn ワークスペース、TypeScript、esbuild、React、Express を使用して K8S クラウド ネイティブ アプリケーションを構築する (パート 1)
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトの基盤を構築...
インターネットの急速な発展に伴い、有料方式で利益を上げることを選択するウェブサイトが増えています。現...
1. ComScore 4月の米国ウェブサイトランキング:Google、Microsoft、Yaho...
数日前、海外の SEO ブログで新しい技術を紹介する記事を見ました。そこには「Create Once...
昨年8月16日、Qihoo 360は360 Search(so.com)を正式にリリースした。 1 ...
企業が複数のクラウドを利用することは避けられなくなっていますが、顧客が異なるサプライヤー間のクラウド...
私は長い間 Dreamhost に注目していませんでした。今日、彼らの特別オファーを見つけました。こ...
いよいよビッグデータで遊び始めます。以前はhaoopエコシステムについてあまり知りませんでしたが、今...
2013年6月、COFCO Womai.comはWeiboに「あなたたちはとても弱い」というタイトル...
今年初めから、福建省通信局はインターネット産業の主管部門としての職責を効率的に遂行し、インターネット...
定期的に読んでいるお気に入りのブログはありますか?非常に有名なブログであれば、誰(創設者兼編集者)が...
パート01 Xinchuang Cloud Desktopとは何ですか?クラウド デスクトップは、伝...
2003 年に設立されたこの古いホスティング会社 a2hosting は、私たちに驚きをもたらしまし...
[51CTO.com からのオリジナル記事] 2017 年は中国におけるクラウド コンピューティング...
SEOウェブサイト最適化に関して、SEO担当者として、SEOはかなり面倒な仕事だと思いますか?プロジ...