Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

CNI としての Contrail

 

コンテナ技術において、仮想イーサネットのペアは、ネットワーク名前空間間のトンネルを作成するために使用できる仮想ケーブルとほぼ同じように機能します。一方の端がコンテナーに接続され、もう一方の端がホストまたは docker ブリッジの名前空間にあります。

Contrail CNI plugin は、ネットワークインターフェイス (veth ペアの片方の端) をコンテナネットワーク名前空間に挿入するとともに、ホストに必要なすべての変更も行います。また、その他の終端のブリッジへの接続、IP の割り当て、ルートの設定などを行います。

CNI プラグインの実装には、現在、一般に公開されているものが数多くあります。Contrail は、お気に入りの1つです。包括的なリストについては、 https://github.com/containernetworking/cniをご確認ください。

Figure 1: コンテナと veth のペア
コンテナと veth のペア

別の CNI プラグイン、multus-CNI を使用すると、ポッドに複数のネットワークインターフェイスを接続できます。Multus-cni のマルチネットワークサポートは、他の CNI プラグインを複数回呼び出す Multus によって実現されます。各プラグインが独自のネットワークを作成するため、複数のプラグインで、pod に複数のネットワークを構築できます。Contrail が提供する主 Contrail なメリットの1つとして、mutus cni との比較、および業界でのその他の現在のすべての実装は、他のプラグインを呼び出さずに、Kubernetes ポッドに複数のネットワークインターフェイスを接続する機能を提供することです。これにより、真のマルチホームポッドがサポートされます。

ネットワーク添付ファイルの定義 CRD

Contrail CNI は、Kubernetes CRD (カスタムリソース定義) のネットワーク添付ファイルの定義に従って、追加のネットワークインターフェイスの設定を指定するための標準化された方法を提供します。標準の Kubernetes アップストリーム Api を変更する必要はなく、最も compatibilities に実装されています。

Contrail では、kube マネージャー (KM) によって、ネットワークアタッチメント定義の CRD が作成されます。起動すると、KM は、ネットワーク CRD network-attachment-definitions.k8s.cni.cncf.io が Kubernetes API サーバーで見つかったかどうかを検証し、存在’しない場合はそれを作成します。

以下に、CRD オブジェクト YAML ファイルを示します。

Contrail Kubernetes セットアップでは、CRD が作成され、検証できるようになりました。

上記の CRD から作成された、この新しいタイプのネットワーク添付ファイルを使用して、Contrail Kubernetes 環境で仮想ネットワークを作成できるようになりました。

Kubernetes から仮想ネットワークを作成するには、YAML テンプレートを次のように使用します。

他の多くの標準 Kubernetes オブジェクトと同様に、仮想ネットワーク名、メタデータの下にある名前空間、およびネットワークに関する追加情報の送信に使用される注釈を指定します。Contrail では、次の注釈が、NetworkAttachmentDefinition CRD で使用され、仮想ネットワークの特定の属性を有効にします。

  • opencontrail.org/cidr: この CIDR では、仮想ネットワークのサブネットを定義します。

  • opencontrail.org/ip_fabric_forwarding: このフラグは、ip ファブリック転送機能を有効または無効にするために使用されます。

  • opencontrail.org/ip_fabric_snat: Ip ファブリック snat の機能を有効または無効にするためのフラグです。

Contrail では、ip ファブリック転送機能によって、仮想ネットワークにトンネリングせずに IP ファブリックベースの転送が可能になります。2つの ip_fabric_forwrding が有効になっている場合、仮想ネットワークは相互に通信します。オーバーレイトラフィックはアンダーレイを使用して直接転送されます。

Contrail ip ファブリック (snat) 機能を使用すると、オーバーレイ内のポッドは、floating IPs や論理ルーターを使用せずにインターネットにアクセスできます。Ip ファブリック snat 機能は、コンピューティングノードの IP を使用して、必要なサービスに到達するソース NAT を作成します。

このガイドでは、ip ファブリック転送と ip ファブリック snat の機能については説明していないことに注意してください。

また、既存の仮想ネットワークを参照して、新しい仮想ネットワークを定義することもできます。

本書では、1つ目のテンプレートを使用して、すべての例で仮想ネットワークを定義しています。