Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Contrail のコンポーネント

Contrailアーキテクチャは、ネットワーク設定プレーンとネットワークコントロールプレーン機能を実行するポッドと、ネットワークデータプレーン機能を実行するポッドで構成されています。

  • ネットワーク設定プレーンとは、Contrailがリソースを管理し、他のKubernetesコントロールプレーンとやり取りできる機能を指します。

  • ネットワークコントロールプレーンは、Contrailのフル機能を搭載したSDN機能を表しています。BGP を使用して他のコントローラと通信し、XMPP はワーカー ノード上の分散データ プレーン コンポーネントと通信します。

  • ネットワークデータプレーンは、各ノード(特にワークロードが存在するワーカーノード)で、パケットの送受信機能を指します。

設定およびコントロールプレーン機能を実行するポッドは、Kubernetesコントロールプレーンノードに存在します。データ プレーン機能を実行するポッドは、Kubernetes コントロール プレーン ノードと Kubernetes ワーカー ノードの両方に存在します。

表 1 は、さまざまな Contrail コンポーネントを示しています。

)
表 1:Contrail のコンポーネント
ポッド名 ( 説明
設定プレーン contrail-k8s-apiserver 制御プレーン ノード

このポッドは、すべてのContrailリソースを管理するためのエントリーポイントである集約型APIサーバーです。通常の kube-apiserver に APIService として登録されます。通常の kube-apiserver は、すべてのネットワーク関連リクエストを contrail-k8s-apiserver に転送して処理します。

Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-apiserverポッドがあります。

contrail-k8s-controller 制御プレーン ノード

このポッドは、Kubernetes制御ループ機能を実行して、ネットワークリソースを調整します。ネットワーク リソースを常時監視し、リソースの実際の状態が意図した状態と一致していることを確認します。

Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-controllerポッドがあります。

contrail-k8s-kubemanager 制御プレーン ノード

このポッドは、KubernetesリソースとContrailリソースの間のインターフェイスです。サービスや名前空間などの通常のKubernetesリソースに対する変更については、kube-apiserverを監視し、ネットワークリソースに影響を与える変更に作用します。

単一クラスタの導入では、Kubernetesコントロールプレーンノードごとに1つのcontrail-k8s-kubemanagerポッドがあります。

マルチクラスターの導入では、分散ワークロードクラスターごとにさらに1つのcontrail-k8s-kubemanagerポッドがあります。

制御プレーン Contrail制御 制御プレーン ノード

このポッドは、ワーカーノードに設定を渡し、ルート学習と配信を実行します。ネットワーク制御プレーンに影響を与えるすべてのものに対して kube-apiserver を監視し、必要に応じて BGP ピアや vRouter エージェント(XMPP 経由)と通信します。

Kubernetesコントロールプレーンノードごとに1つのcontrail制御ポッドがあります。

データ プレーン contrail-vrouter-nodes ワーカー ノード

このポッドには、vRouterエージェントとvRouter自体が含まれています。

vRouter エージェントは、Contrail コントローラーと対話する際に、ローカル vRouter に代わって動作します。ノードごとにエージェントが 1 つあります。エージェントは、2 つの Contrail コントローラとの XMPP セッションを確立して、以下の機能を実行します。

  • は、制御プレーンからの設定をvRouterが理解するオブジェクトに変換し、
  • ルートを管理するためのコントロールプレーンとのインターフェイス
  • データプレーンから統計情報を収集してエクスポートします。

vRouter は、同じ場所にあるポッドとワークロードに対してパケットの送受信機能を提供します。CNIプラグイン機能を提供します。

contrail-vrouter-masters 制御プレーン ノード このポッドは、contrail-vrouter-nodesポッドと同じ機能を提供しますが、コントロールプレーンノード上に存在します。
メモ:

ネットワーク構成プレーンとネットワーク制御プレーンを構成するコンポーネントは、総称して Contrail コントローラと呼ばれます。

図 1 は、これらのコンポーネントを Kubernetes クラスタのコンテキストで示しています。わかりやすくするため、また乱雑さを軽減するために、この図では Kubernetes コントロール プレーン ノード上のデータ プレーン ポッドは表示されません。

図 1:Contrail のコンポーネント Contrail Components
メモ:

リリース 22.2 以降、OpenShift で実行する場合、Contrail はデフォルトで独自の etcd データベースを使用します。以前のリリースおよびアップストリームのKubernetesで実行されているすべてのContrailリリースでは、ContrailはメインのKubernetes etcdデータベースを使用しています。

kube-apiserver は、クラスターの Kubernetes REST API コールのエントリ ポイントです。すべてのネットワークリクエストをContrail-k8s-apiserverに転送します。Contrail API呼び出しのエントリポイントです。contrail-k8s-apiserver は、受信するネットワーク要求を、対応する Contrail オブジェクトへの REST API 呼び出しに変換します。場合によっては、これらの呼び出しにより、Contrail コントローラが 1 つ以上のワーカー ノード上の vRouter エージェントに XMPP メッセージを送信したり、他のコントロール プレーン ノードまたは外部ルーターに BGP メッセージ(図示せず)を送信したりすることがあります。これらの XMPP および BGP メッセージは、通常の Kubernetes ノード間通信の外部で送信されます。

contrail-k8s-kubemanager(クラスター)コンポーネントは、マルチクラスターの導入にのみ存在します。さまざまなタイプの導入の詳細については、「導入モデル」を参照してください。

図 2 は、複数の Contrail コントローラを持つクラスタを示しています。Kubernetes コンポーネントは、REST を使用して相互に通信します。Contrail コントローラは、通常の Kubernetes REST インターフェイスの外部で、iBGP を使用して互いにルートを交換します。冗長性を確保するために、ワーカーノードのvRouterエージェントは、常に2つのContrailコントローラとのXMPP通信を確立します。

図 2:複数の制御プレーン ノード Multiple Control Plane Nodes