Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

コンテナ用の複数のネットワークインターフェイス

メモ:

このトピックでは、Contrail Networkingリリース21ベースのリリースを使用している、Kubernetesでオーケストレーションされた環境におけるContrail Networkingについて説明します。

リリース 22.1 以降、Contrail Networking はクラウドネイティブの Contrail Networking に進化しました。クラウドネイティブのContrail Networkingは、Kubernetesオーケストレーションされた環境でネットワークパフォーマンスを最適化するための大幅な機能強化を提供します。Kubernetesでオーケストレーションされたほとんどの環境のネットワーキングには、クラウドネイティブのContrailの使用をお勧めします。

クラウドネイティブContrailの一般的な情報については、 クラウドネイティブContrail Networking テクニカルライブラリのホームページを参照してください。

リリース 4.0 以降、Contrail は Kubernetes オーケストレーションを使用してコンテナのネットワーク サポートを提供します。標準のコンテナネットワーキングインターフェイス(CNIプラグイン)を使用して作成するすべてのコンテナにネットワークインターフェイスを割り当てることができます。Contrailコンテナネットワーキングの詳細については、 ContrailとKubernetesの統合を参照してください。

Contrail リリース 5.1 以降、コンテナに複数のネットワークインターフェイス(マルチネット)を割り当てて、コンテナを複数のネットワークに接続できるようになりました。コンテナーが接続できるネットワークを指定できます。ネットワークインターフェイスは、物理インターフェイスまたは仮想インターフェイスのいずれかであり、Linux ネットワーク名前空間に接続されています。ネットワーク名前空間は、Linux カーネルのネットワーク スタックです。複数のコンテナーが同じネットワーク名前空間を共有できます。

The following limitations and caveats apply when you create multi-net interfaces:

  • ポッドの実行中にサイドカー ネットワークを追加または削除することはできません。

  • 管理者は、Kubernetes API サーバーからネットワーク接続定義を削除する前に、対応する Contrail ポッドを削除する責任があります。

  • Contrail では、カスタム ネットワークに加えてデフォルト cluster-wide-network が作成されます。

  • Contrail CNIプラグインは委任プラグインではありません。Kubernetes ネットワークのカスタムリソース定義デファクト標準バージョン 1 で提供されているプラグインを委任するための仕様はサポートされていません。詳細については、https://github.com/K8sNetworkPlumbingWG/multi-net-spec ページの [v1] Kubernetes ネットワーク カスタム リソース定義デファクト Standard.md を参照してください。

Contrail マルチネットのサポートは、Kubernetes マルチネット モデルに基づいています。Kubernetesマルチネットモデルは、特定の設計と構造を持ち、Contrailマルチネットなどの非Kubernetesモデルにも拡張できます。Contrailマルチネットモデルでは、Kubernetes APIおよびKubernetes CNIドライバを変更する必要はありません。Contrailマルチネットモデルは、Kubernetesマルチネットモデルの場合と同様に、既存のクラスタ全体のネットワーク動作を変更しません。

Creating Multi-Net Interfaces

次の手順に従って、マルチネットインターフェイスを作成します。

  1. ネットワーク オブジェクト モデルを作成します。

    ネットワーク オブジェクト モデルは、クラスターがモデルをサポートしていない場合に作成します。

    コンテナー オーケストレーション プラットフォームのオブジェクト モデルは、ネットワークを表し、ネットワークをコンテナーに接続します。モデルがデフォルトでネットワーク オブジェクトをサポートしていない場合は、エクステンションを使用してネットワークを表すことができます。

    Kubernetes を使用したネットワーク オブジェクト モデルの作成 ネットワーク接続定義 CRD オブジェクト

    Kubernetes は、カスタム拡張機能を使用して、オブジェクト モデルでネットワークを表します。KubernetesのCustomResourceDefinition(CRD)機能は、カスタム拡張機能のサポートに役立ちます。

    メモ:

    CRD は、Contrail のインストール時に自動的に作成されます。CRD によって指定されたネットワークは、Kubernetes によって認識されないサイドカーです。追加のポッド ネットワーク添付ファイルと Kubernetes API およびそのオブジェクト (サービス、エンドポイント、プロキシなど) との相互作用は指定されていません。Kubernetes は、これらのオブジェクトとポッドとの関連付けを認識しません。

  2. ネットワークを作成します。

    クラスタ内にネットワークを作成します。

    • API サーバー経由。

      right-network.yaml ファイルを作成します。

    • Contrail Web ユーザー インターフェイスまたは Contrail Command ユーザー インターフェイスから作成した既存のネットワークにマッピングする。

    コマンドでネットワークを作成します。

  3. ポッドにネットワークを割り当てます。

    手順 2 で作成したネットワークをポッドに割り当てます。各ポッドには、デフォルトのネットワークも割り当てられています。したがって、各ポッドには次のネットワークが割り当てられます。

    • デフォルト ネットワーク (Kubernetes によって割り当て)

      メモ:

      Contrail は、 という cluster-wide-networkデフォルトのネットワークを内部で作成します。このインターフェイスは、ポッドの既定のインターフェイスです

    • ステップ 2 で作成したネットワーク

    k8sセマンティクスを使用したポッドへのネットワークの割り当て:

    Option 1

    Option 2