さまざまなコンテナ ネットワーク モデルの実装原理については既に基本的な理解がありますが、コンテナ テクノロジーを真に推進するのは Kubernetes コンテナ オーケストレーション プラットフォームです。 Kubernetes は多数のコンテナインスタンスを統合してクラスターを形成します。これらのコンテナ インスタンスは、異機種の基盤ネットワーク環境で実行される場合があります。これらのコンテナ間の相互運用性をどのように確保するかは、実際の運用環境における主要な考慮事項の 1 つです。 Kubernetesネットワークの基本要件 Kubernetes はコンテナ テクノロジーの抽象化をさらに進めました。最も重要な点はポッドの概念です。 Pod は Kubernetes リソース スケジューリングの基本単位です。ポッドは単純にコンテナの拡張と考えることができます。ネットワークの観点から、ポッドは次の条件を満たす必要があります。
これらの基本要件に基づいて、次のことを知ることができます。
実際、Kubernetes は、適格なクラスター ネットワークの基本要件をさらに定義しています。
つまり、上記の 3 つの要件をすべて満たすネットワーク モデルは、Kubernetes に適用できます。実際、Kubernetes の初期の頃にはネットワーク標準はなく、上記の基本的な要件のみが提案されていました。これらの要件を満たすネットワークのみを Kubernetes のデプロイに使用できます。この基礎となるネットワークの仮定に基づいて、Kubernetes は、pod-deployment-service という古典的な 3 層サービス アクセス メカニズムを設計しました。 Kubernetes が新しい CNI (Container Network Interface) ネットワーク標準を採用し始めたのは、1.1 のリリースになってからでした。 インド国立情報学研究所 実際、先ほどコンテナ ネットワークを紹介したときに、CNI ネットワーク仕様について言及しました。 CNM (コンテナ ネットワーク モデル) と比較すると、CNI は開発者に対する制約が少なく、よりオープンであり、Docker に依存しません。実際、CNI 仕様は非常にシンプルです。https://github.com/containernetworking/cni/blob/master/SPEC.md をご覧ください。 CNI ネットワーク プラグインを実装するには、構成ファイルと実行可能ファイルのみが必要です。
CNI ネットワーク プラグインを使用した Kubernetes の基本的なワークフローは次のとおりです。
一時停止コンテナが何であるか、ポッド内のどこにあるかがわからない場合は、前のメモを参照してください: https://morven.life/notes/from-container-to-pod/ ポッドネットワークモデル Kubernetes ネットワーク モデルの実装原理を理解するには、単一のポッドから始める必要があります。実際、単一ポッドのネットワーク モデルに慣れると、Kubernetes ネットワーク モデルは基本的にコンテナ ネットワーク モデルと同じ原則に従っていることがわかります。 前述の Docker コンテナからポッドへのメモから、ポッドが起動すると、まず一時停止コンテナが作成されて対応する netns ネットワーク名前空間が生成され、その後、他のコンテナが一時停止コンテナによって作成されたネットワーク名前空間を共有することがわかります。単一コンテナのネットワークモデルについては、以前にも紹介しました。主に、docker0 ブリッジ デバイスと veth デバイスを介して、異なるコンテナ ネットワーク名前空間を接続します。これから、次の図に示すように、単一のポッド ネットワーク モデルの作成プロセスを取得できます。 同じポッド内の他のコンテナは、一時停止コンテナによって作成されたネットワーク名前空間を共有していることがわかります。つまり、すべてのコンテナは、同じマシン上で実行されている異なるプロセスであるかのように、同じネットワークデバイス、ルーティングテーブル設定、サービスポートなどの情報を共有しているため、これらのコンテナは localhost を介して対応するポートと直接通信できます。クラスター外のリクエストの場合、docker0 ブリッジ デバイスがゲートウェイとして機能し、アドレス変換には iptables が使用されます。これは実際にはコンテナのブリッジ ネットワーク モデルの拡張であることがわかります。 主流のKubernetesネットワークソリューション 前のセクションでは、単一ポッドのネットワーク モデルはコンテナ ネットワーク モデルの拡張であることを学びました。しかし、ポッドはどのようにして互いに通信するのでしょうか?これは実際にはコンテナ間の通信と非常によく似ており、同じホスト上のポッド間の通信とホスト間のポッド間の通信の 2 つのタイプに分けられます。 コンテナ ネットワーク モデルと同様に、同じホスト上のポッドは、docker0 ブリッジ デバイスを介してレイヤー 2 (データ リンク層) ネットワーク上の MAC アドレスを介して直接通信できます。 ホスト間ポッド通信には、主に 2 つの考え方があります。
ホスト ルートの変更: コンテナ ネットワークをホスト ルーティング テーブルに追加し、ホスト ネットワーク デバイスをコンテナ ゲートウェイとして使用し、ルーティング ルールを通じて指定されたホストに転送し、コンテナの 3 層相互接続を実現します。現在、ルーティング技術を通じてコンテナ間のホスト間通信を実現するネットワークとしては、Flannel host-gw や Calico などがあります。 主流の解決策をいくつか紹介します。
次の表は、いくつかの主流の Kubernetes ネットワーク ソリューションを比較したものです。
ポリシー制御(ネットワークポリシー) ネットワーク ポリシーは、アプリケーションを分離してセキュリティを強化するために Kubernetes によって提供されるポリシー ベースのネットワーク制御です。 Kubernetes で一般的に使用されるラベル セレクターを使用して、従来のセグメント化されたネットワークをシミュレートし、それらの間の東西トラフィックと、ポリシーを通じて外部と通信するための南北トラフィックを制御します。
次の例では、一般的なネットワーク ポリシー インスタンスを構成します。
ラベルセレクター namespaceSelector と posSelector を使用して、ポッド間のトラフィックを制御します。トラフィックの動作は主に次の 3 つのオブジェクトによって決まります。
ネットワーク ポリシーを使用すると、受信フローと送信フローを正確に制御できます。さまざまなセレクター (ラベルまたは名前空間) を使用して、条件を満たすポッドのグループを見つけたり、通信の両端を見つけたりして、トラフィックの特性に基づいて接続できるかどうかを判断します。これはホワイトリストのメカニズムとして理解できます。 |
<<: 5Gとモバイルエッジコンピューティングがあなたの生活を変える10の方法
>>: クラウドコンピューティングは「クラウドコンピューティング」にはならない
競争がますます激しくなるにつれて、毎月数十万ドルの広告費を投じる多額の投資を行う企業が多くなっていま...
モバイルインターネットの発展により、従来の金融業界にまったく新しいビジネスモデルが生まれました。金融...
注: この記事は、3 月 25 日に開催された Huxiu WOW! 2014 New Media ...
検索エンジン業界における Google の地位は明らかです。中国のような特殊な環境でも、ウェブマスタ...
今日は、初心者ウェブマスターの友人全員に最近の実践事例を共有したいと思います。これはランキング最適化...
最近よく聞くのは、誰かのウェブサイトがブロックされた、誰かのウェブサイトが復旧した、百度がまたおかし...
デジタル変革が深まるにつれ、クラウドコンピューティング、人工知能、ビッグデータ、モノのインターネット...
SUSE® は、ベテラン技術エグゼクティブであり、元 SAP 幹部の Melissa Di Dona...
ソーシャルメディアの発展に伴い、Weibo、Tencent、Toutiaoは早くから情報フロー広告商...
「オープンソースは選択であり、姿勢であり、ライフスタイルであり、また自分自身に逃げ道を残す手段でもあ...
北京時間1月27日、外国メディアの報道によると、ChinaHR.comの主要株主であり米国最大の求人...
Kipplexは2009年に設立された新しいホスティング会社です。あまり情報がありません。サーバーに...
私たちはいつも、サイト開発の原動力は何だろうと考えてきました。ランキングでしょうか、それとも利益でし...
[[413156]] JDK16 GA がリリースされてからかなり経ちますが、ほとんどの本番環境では...
これまで常に「優等生」の役割を果たしてきたテンセントは、今年の財務報告では好成績を収められなかった。...